ASファイルからのstageの参照方法

このQ&Aのポイント
  • flashcs3 actionscript3.0で作成しています。asファイルからのstageの参照方法を知りたいです。
  • flash上のstageをnullと解釈してしまう問題があります。どうすれば良いのでしょうか?
  • ASファイルからflash上のstageを参照する方法を教えてください。
回答を見る
  • ベストアンサー

ASファイルからのstage

flashcs3 actionscript3.0で作成しています。 asファイル "Test.as" package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.*; public class Test extends Sprite { public function Test() { init(); } private function init() { for (var i:uint = 0; i<10; i++) { var sp:Sprite = new Sprite(); sp.graphics.beginFill(0x00CCFF); sp.graphics.drawRect(i*20,50,20,20); sp.graphics.endFill(); stage.addChild(sp); } } } } flash var hoge2 = new Test(); と書いてflash上のstage上にSpriteをaddChildしたいのですがstageをnullと解釈してしまいます。 この場合flash上のstageを参照するにはどうすれば良いのでしょうか?

  • jsqrm
  • お礼率45% (16/35)
  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • cspl
  • ベストアンサー率83% (55/66)
回答No.1

Flashでフレームに記述してnewするのではなく、プロパティパネルからドキュメントクラスにTestを定義すれば解決すると思います。 あるいは、initを呼び出す部分を下記のようにして、ステージ上に追加されたタイミングに呼び出されるように変更します。 ____________________________________________________ □Test.as public function Test() { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event) { //--省略 } □flash var hoge2 = new Test(); this.addChild(hoge2); ____________________________________________________

関連するQ&A

  • AS3.0 写真の切り替え

    調べても調べても漠然とした状態が続いてるので質問させていただきました。 まず、サンプルとしてこんなようなものが作りたいんです。 http://www.subaru-sls.co.jp/ ここの企業みたいな写真が一定時間でその場所その場所に移動していくというのを作りたいのですが、今後のことを考え、タイムラインにASを組むのではなく、外部AS(ドキュメントクラス?)だけで作りたいのです。 因みに写真などの配置はなんとかできたのですが、写真が切り替わるのがまったくわかりません。 こちらが現状況のコードになります。↓ package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Shape; import flash.events.TimerEvent; import flash.utils.Timer; import flash.events.MouseEvent; import flash.display.Bitmap; [SWF(width = "550",height = "400")] public class main extends Sprite { //プロパティ var mc01:Sprite = new Sprite(); var mc02:Sprite = new Sprite(); var mc03:Sprite = new Sprite(); var imgUrl01:String = "kabegami1.jpg"; var imgUrl02:String = "kabegami2.jpg"; var imgUrl03:String = "kabegami3.jpg"; var onUrl01:URLRequest = new URLRequest(imgUrl01); var onUrl02:URLRequest = new URLRequest(imgUrl02); var onUrl03:URLRequest = new URLRequest(imgUrl03); var img01:Loader = new Loader(); var img02:Loader = new Loader(); var img03:Loader = new Loader(); var square01:Shape = new Shape(); var square02:Shape = new Shape(); var square03:Shape = new Shape(); var i:int = 0; var timer:Timer = new Timer(20); //コンストラクタ public function main () { init (); } //メソッド private function init () { square01.graphics.beginFill (0x000000); square02.graphics.beginFill (0x000000); square03.graphics.beginFill (0x000000); square01.graphics.drawRect (10, 10, 330, 380); square02.graphics.drawRect (350, 10, 110, 380); square03.graphics.drawRect (470, 10, 70, 380); square01.graphics.endFill (); square02.graphics.endFill (); square03.graphics.endFill (); img01.mask = square01; img02.mask = square02; img03.mask = square03; img01.load (onUrl01); img02.load (onUrl02); img03.load (onUrl03); addChild (square01); addChild (square02); addChild (square03); addChild (img01); addChild (img02); addChild (img03); timer.addEventListener (TimerEvent.TIMER,onTimer); timer.start (); img01.addEventListener (MouseEvent.MOUSE_DOWN,mouseDownHandler); } private function mouseDownHandler (event:MouseEvent):void { } private function onTimer (event:TimerEvent):void { i++; img01.alpha -= 0.01; } } } 長文になってしまいましたが、どうかご教授お願いします。

    • ベストアンサー
    • Flash
  • addChildした後に操作したい。

    package { import flash.display.*; public class goo extends Sprite { public function goo() { create(); stage.myRect.y =100;// 1119 未定義である可能性が高い・・・エラー。 } public function create() { var myRect:Sprite = new Sprite(); myRect.graphics.beginFill(0xFF0000); myRect.graphics.drawRect(10,10,200,100); myRect.name = "rect"; addChild(myRect); } } } addChildした後にmyRectのyの位置等を変更するにはどうすればよいでしょうか。 また、この問題について詳しく載っているURL等があれば教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • actionscript3.0ものすごく初心者です

    周辺見かけたプログラムを解読(?)しながら勉強しています。 以下のプログラムをflash cs5(actionscript3.0)にて入力すると パッケージはネストできません。と出ます。 どなたかが、ASじゃないとダメなのかなぁ.....とつぶやいていたのを見かけたのですが 当方何のことか全くわかりません。どのようにそれば以下の内容をflash cs5にてうち込む ことができるでしょうか?またできました、なぜ以下のパッケージが受け付けられないのかも教えていただきますと助かります。(packageは既に含まれているという記述を見ましたが 当方何のことか全くわかりません。)よろしくお願いします。 package { import flash.display.Sprite; [SWF(width="240",height="80",frameRate="24")] public class GraphicsSample extends Sprite { public function GraphicsSample() { var sp1:Sprite = new Sprite(); sp1.x = 30; sp1.y = 20; sp1.graphics.lineStyle(5,0xFF0000,1); sp1.graphics.moveTo( 0, 0); sp1.graphics.lineTo(10,45); sp1.graphics.lineTo( 0,20); sp1.graphics.lineTo(45,60); addChild(sp1); } } }

    • ベストアンサー
    • Flash
  • ac3 tweener の 色変換について

    tweenerを使って、オブジェクとの色が変化する様子を確認しようと試したところ、以下の記述の中で_colorが認識されません。ある方のページから引用したものをほとんどそのまま試しているのですが、どのように修正したらよろしいでしょうか?お願いします。 package { import flash.display.*; import caurina.transitions.Tweener; import flash.events.MouseEvent; [SWF( backgroundColor='0xFFFFFF', width='300', frameRate='30')] public class Tweener_Test extends Sprite { public function Tweener_Test() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); } private function init():void{ var Box:Sprite = new Sprite(); Box.graphics.beginFill(0x000000); Box.graphics.drawRect(0,0,50,50); Box.graphics.endFill(); addChild(Box); Box.addEventListener(MouseEvent.CLICK,function():void{ Tweener.addTween(Box, {_color:0xFF0000,x:120,time:2,transition:"linear"}); }); } } }

    • ベストアンサー
    • Flash
  • ActionSccript3.0 クラスについて

    Flash 初心者です。 現在AS3を勉強して半年くらいになります。一通り仕組みは理解できたのですが、2つのクラスを合わせて使うときに詰まってしまいました。内容は、 フルフラッシュで背景画像はリサイズ可能でメニュー・フッター等のサイズが固定のクラス 『BgSet.as』 package { import flash.events.Event; import flash.display.*; import flash.text.TextField; import flash.display.StageAlign; import caurina.transitions.Tweener; public class BgSet extends MovieClip { private var parH:Number; private var parW:Number; public function BgSet() { init(); } private function init():void{ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.BOTTOM_RIGHT; var bw:Number = back_mc.width; var bh:Number = back_mc.height; function arrangeMC():void{ var sw:int = stage.stageWidth; var sh:int = stage.stageHeight; menu_mc.x = sw; main_mc.x = sw/2; main_mc.y = sh/2; footer_mc.y = sh; logo_mc.x = sw; logo_mc.y = sh; back_mc.width = sw; back_mc.height = bh/bw*sw; } arrangeMC(); function stageOnResize(evt:Event):void { arrangeMC(); } } } } と、 背景画像にビットマップでドットを敷き詰めるクラス 『BgBtm.as』 package { import flash.display.BitmapData; import flash.display.Sprite; public class BgBtm extends Sprite { public function BgBtm() { var bmd:BitmapData = new BitmapData(3, 3, true, 0x00ffffff); bmd.setPixel32(0, 0, 0xffffffff); bmd.setPixel32(1, 1, 0xffffffff); var sp:Sprite = new Sprite(); sp.graphics.beginBitmapFill(bmd, null, true, false); sp.graphics.drawRect(0, 0, 1200, 1200); sp.graphics.endFill(); addChild(sp) } } } この二つのクラスを一つずつ実行することは問題なく出来るのですが、二つの.asファイルを『Main.as』から呼び出して実行しようと思いフォルダ『MyProgram』に入れました。 それぞれ package MyProgram{ として、 Main.asは package { import flash.display.MovieClip; import MyProgram.*; としたまでは良かったのですがこの先でつまづいています。。 ここまでで出てきた問題は、 1、BgSetのback_mc・menu_mcへアクセス出来ない。 2、BgBtmのビットマップが表示されない 3、仮にBgSetをflaファイルのドキュメントクラスに定義してBgSet.as内からBgBtmをnewして実行した場合でもビットマップが表示されない。 ということが起きています。 Main.asファイルをいろいろと書き換えて試しているのですが答えが出ません。 どなたかご教授お願い致します。

    • ベストアンサー
    • Flash
  • ActionScript3.0についての質問です

    はじめまして。 いまFlash ActionScript3.0を勉強中です。 フルスクリーンについてどうしてもわからないことがありまして 質問させていただきました。 フルスクリーン処理をasファイルで制作中で、 fullscreenボタンを押すとnormalボタンに切り替わる処理ができません。 特にエラーも起きなくて混乱中です。 すいませんがよろしくお願いします。 ※質問内容以外省略。 package { //インポート import flash.display.Sprite; import flash.display.SimpleButton; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.Event; import flash.events.MouseEvent; import flash.events.FullScreenEvent; [SWF(backgroundColor="#000000", width="600", height="400", frameRate="30")] public class Main extends Sprite { //プロパティ private var fullscreenBtn:Sprite; private var fullscreenBtn1:SimpleButton; private var normalBtn1:SimpleButton; // コンストラクタ public function Main() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); stage.addEventListener(Event.RESIZE, updatePos, false, 0, true); } // メソッド private function init():void { fullscreenBtn = new Sprite(); addChild(fullscreenBtn); fullscreenBtn.y = 6; var fullscreenBtn1 = new FullscreenBtn(); var normalBtn1 = new NormalBtn(); fullscreenBtn.addChild(fullscreenBtn1); fullscreenBtn.addEventListener(MouseEvent.CLICK,btChangeClicHandler); stage.addEventListener(FullScreenEvent.FULL_SCREEN,stageFullScreenHandler); updatePos(null); } //イベント private function updatePos(evt:Event):void { fullscreenBtn.x = stage.stageWidth - 85; } //マウスイベント private function btChangeClicHandler(evt:MouseEvent):void { if (stage.displayState == StageDisplayState.FULL_SCREEN) { stage.displayState = StageDisplayState.NORMAL; } else { stage.displayState = StageDisplayState.FULL_SCREEN; } } //ボタンの切り替え ※この処理がうまくいきません。エラーは起こりません。 private function stageFullScreenHandler(evt:FullScreenEvent):void { if (evt.fullScreen) { fullscreenBtn.removeChild(fullscreenBtn1); fullscreenBtn.addChild(normalBtn1); } else { fullscreenBtn.removeChild(normalBtn1); fullscreenBtn.addChild(fullscreenBtn1); } } } }

    • ベストアンサー
    • Flash
  • actionscript3.0 初心者です。

    ある円の半径を、マウスカーソルのX座標に対応させて変化させよう思い、以下の記述を行ったのですが、プレビューにて全く何も表示されません。お心当たりあれば是非教えていただきたいです。やはり、半径の値をiの形で代入させるようにしたことが無理矢理だったのでしょうか。よろしくお願いします。 package { import flash.display.Sprite; import flash.events.Event; public class boin extends Sprite {  public function boin() { var _maru:Sprite = new Sprite(); var i:Number = new Number();    _maru.graphics.beginFill(0xFF0000);    _maru.graphics.drawCircle(0,0,i);    _maru.graphics.endFill();    _maru.x = 100;    _maru.y = 200;    addChild(_maru);  addEventListener(Event.ENTER_FRAME,boo);  {   function boo(event:Event):void    {     _maru.x = mouseX;     i = mouseX;     }   } } } } ASファイル(boin)

    • ベストアンサー
    • Flash
  • FlashLite4.0について

    いつもお世話になっております。 FlashLite4.0についてお聞きしたく存じます。 以下のようにFlashLite4.0でコードを書き勉強中です。 (Flashも始めたばかりなのですが。) example.fla(アクションフレーム) -------------------------------------------------- stop(); import com.Example; var example:Example = new Example; com/Example.as -------------------------------------------------- package com {  import flash.display.Sprite;  public class Sample08 extends Sprite {   public function Sample08() {    init();   }   protected function init():void {    var time:Time = new Time;    addChild(timeView);   }  } } com/Time.as -------------------------------------------------- package com {  import flash.display.MovieClip;  public class TimeView extends MovieClip {   public function Time() {    // これが出力されると思っております。    trace("time");   }  } } パブリッシュをすると「time」が出力されると考えていたのですが出力されません。 また、flashLite4.0で動的にテキストを出力するにはどうしたらよろしいでしょうか。 ご教示よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 自作ファイルのインポートしてnewができない

    AS3.0 自作ファイルのインポートと、newの仕方 flashCS3でWIndowsXP使用 下は、classA.asファイル package{ import flash.events.MouseEvent; import flash.events.Event; import flash.display.MovieClip; public class Bom{ var stage:MovieClip; public function Bom(stage:MovieClip){ this.stage = stage; } } } これを、あるフラッシュプロジェクトのタイムラインで使用したい。 import classA.as var bom = new Bom(stage); こうすると見て意義である可能性が高いBom()の呼び出しです。 とエラーが出ます。 解決方法を教えてください。 インポートはたぶん成功しています。

  • actionscript初心者です。importに

    友人に教えてもらったプログラムを練習用に解読?しています。 以下のプログラムにおいて、 importを含んだ時 importを含まない時(2つを消してしまった場合)では プレビューにおいては両者とも問題なく動作しますが 以下に、importを加える必要があるのでしょうか? よろしくお願い致します。 import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(20, 20, 20); circle1.buttonMode = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("OK"); } addChild(circle1); addChild(circle2);

    • ベストアンサー
    • Flash

専門家に質問してみよう