• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ActionSccript3.0 クラスについて)

ActionSccript3.0 クラスについて

このQ&Aのポイント
  • AS3を半年勉強していますが、2つのクラスを合わせて使う際に詰まっています。
  • BgSetクラスのback_mcやmenu_mcへのアクセスができず、BgBtmクラスのビットマップも表示されません。
  • また、BgSetをドキュメントクラスに定義してBgBtmを実行しても同様の問題が起きます。

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

  • ベストアンサー
回答No.2

よく見たらback_mcとかって どこにも変数宣言ありませんね もしかしてアレですか BgSetクラスって シンボルの基本クラスで使ってるんですか? ってことはシンボル化のときにAS用に書き出しチェックつけて クラス名つけてそれをnewしてaddChildしてるんですよね? back_mcとかmenu_mcってのがオーサリングでつくったものってことなら ADDED_TO_STAGE待たないとアクセスできないです スクリプトのコードで変数宣言されたものと違って プロパティウインドでつけられた名前は基本的にステージからのパスです そのタイムラインが再生された状態で初めて有効になります そのムービー内のアクセスしたい対象が登場するフレーム以降に 書かれたコードならADDED_TO_STAGEを 待つ事なくアクセスすることができるんですが 外からアクセスする場合はADDED_TO_STAGE待たないとダメです こういう事はあんまりしないので、詳しくわかんないですが 多分back_mcとかmenu_mcのADDED_TO_STAGEを知る為に そのBgSetを継承したシンボルのクラスに 何らかのイベントをdispatchEventさせて そのイベントを待ってアクセスしないと いけないんじゃないかと思います 多分そんな面倒なことしなくても もっとスマートな方法がある気がしますが とりあえずアクセスできるタイミングとか 単純に考えるとそんなカンジです

jabu007
質問者

お礼

ご回答ありがとうございました。 いろいろ詳しく回答頂きましてありがとうございました。 答えが見えたような気が致します。本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

1についてはとりあえずback_mcとmenu_mcを そとからいじりたいならgetter作るかpublic宣言しましょ ところでテストはしてないですけどBgSet単独ではうごくって事ですが Event.ADDED_TO_STAGEを待たずにstageを参照してるから nullのオブジェクト参照云々とかエラー出る気がするんですが気のせい? それともドキュメントクラスで使ってるんでしょうか? 2についてなんですがBgBtmのコードで気になったこと なんでSprite拡張クラスに動かす訳でもない Spriteインスタンス入れ子にしてそこに描画してるのか 後々動かす予定ならまあわかるんですが なるべく表示オブジェクトの階層は浅くしておきたいもの …で、ちょっと思ったんですがもしかして これもドキュメントクラスでテストしたりしてるんでしょうか? フレームアクションに書くものを外に書く感覚で ASファイルを書いてるカンジだったりしませんか? extends MovieClipとかって ドキュメントクラスに使う為のキーみたいに 勘違いしてるとかないですか? var bg:BgBtm=new BgBtm()したあと addChild(bg)とかしてないとか? BgBtmのaddChild(sp)はstageにaddChildしてるとか 勘違いをしてたりってのはないですか? BgBtmのコード自体は無駄に入れ子にしてる以外は 全然普通に動くはずなので2・3のような問題が起きるのは なんか根本的なところで勘違いがあるような気がしたので 勘違いであれば失礼

jabu007
質問者

補足

H240S18B73様、ご回答ありがとうございました。 お手数ですがもう少しご質問させていただいてよろしいでしょうか? 1、についてなのですがgetterやpublic宣言はMain.asでやるものなのでしょうか?? ちなみにBgSet内の function stageOnResizeの前の stage.addEventListener(Event.RESIZE, stageOnResize); の一文が抜けてました。。。 これで問題なく動いてます。 extendsはクラスの継承と言うことですよね? MovieClipクラスのカスタムクラスで使用しています。 お手すきでご回答いただければ幸いです。 よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A