actionscript 3でムービークリップ内に読み込んだ外部swf内の関数の使い方を教えてください。
以下仮ソースです
var mc:MovieClip = new MovieClip();
var imgLoader:Loader = new Loader();
var path:URLRequest = new URLRequest("materials/key_550.swf");
var childSwf:MovieClip;
imgLoader.load(path);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader);
function compLoader(evt:Event):void{
mc.addChild(imgLoader);
addChild(mc);
childSwf = mc.imgLoader.content as MovieClip //ここをimgLoader.content as MovieClipとするといけるのですが、mcの子のloaderと指定したいのです。
startGOGO();
}
function startGOGO():void{
childSwf.keyContMove(); //子のswf内の関数です。
}
よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
書かれていらっしゃる imgLoader は
Loaderインスタンス を参照する変数です。
そこが理解できていないのではないかと思います。
まず
書かれていらっしゃるスクリプトをちゃんと動作するように書き換えた上で
一部に注釈行を加えます。
------------------------------
var mc:MovieClip = new MovieClip();
//Loaderインスタンスを作成し
//そのインスタンスを参照する変数imgLoaderを
//このタイムラインに用意
var imgLoader:Loader = new Loader();
var path:URLRequest = new URLRequest("materials/key_550.swf");
var childSwf:MovieClip;
//変数imgLoaderが参照するインスタンスに
//指定ファイルをロード
imgLoader.load(path);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader);
function compLoader(evt:Event):void {
//mc内に imgLoaderが参照するインスタンスを配置
mc.addChild(imgLoader);
addChild(mc);
//★変更:変数childSwfにimgLoader内コンテンツの参照を代入
childSwf = imgLoader.content as MovieClip;
//★追加:関数startGOGOを実行
startGOGO();
}
//関数startGOGOの定義
function startGOGO():void {
childSwf.keyContMove();
}
------------------------------
とりあえずはココまで↑を理解してみてください。
> //ここをimgLoader.content as MovieClipとすると
> いけるのですが、mcの子のloaderと指定したいのです。
なぜそのようなこと(変なこと)をする必要があるのかさっぱりわかりませんが
もしそうするのであれば上記スクリプトをさらに次のように変更する必要があります。
------------------------------
var mc:MovieClip = new MovieClip();
//★変更:Loaderインスタンスを作成し
//そのインスタンスを参照する変数imgLoaderを
//mc内に用意
mc.imgLoader = new Loader();
var path:URLRequest = new URLRequest("materials/key_550.swf");
var childSwf:MovieClip;
//★変更:mc内の変数imgLoaderが参照するインスタンスに
//指定ファイルをロード
mc.imgLoader.load(path);
mc.imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader);
function compLoader(evt:Event):void {
//★変更:mc内に mc内の変数imgLoaderが
//参照するインスタンスを配置
mc.addChild(mc.imgLoader);
addChild(mc);
//★変更:変数childSwfにmc内の
//imgLoader内コンテンツの参照を代入
childSwf = mc.imgLoader.content as MovieClip;
//関数startGOGOを実行
startGOGO();
}
//関数startGOGOの定義
function startGOGO():void {
childSwf.keyContMove();
}
------------------------------
繰り返しますが
○○ = new □□();
で作成される ○○ は
インスタンスを参照する変数です。
教えていただいてありがとうございます。独学で勉強したのでちゃんと理解できていなかった部分がありました。
説明不足で申し訳ございません。やりたい事は以下のような事です。
このソースが書かれている『親swf』と『親swf』が関数を実行したい『子swf』とさらに『親swf』内の関数を実行したい『大親swf』がいます。
『大親swf』はプリローダです。初めにこの『親swf』を読み込み、『親swf』がxmlからパスを読み込んで『子swf』や『子jpg』を配置します。
そして『大親swf』が全て実行し終えると『親swf』内の関数 startGo(); を実行して『親swf』が動き出してkeyArray[i]をリスナー登録します。
そしてkeyArray[i]をクリックし、もしそれがjpgではなくswfファイルならばその中の関数を読みこみたいです。
var keyArray:Array = [];
var childSwf;
yomikomi();
function yomikomi():void{
for(var i:int = 0;i < 9;i++){
keyArray[i] = mcComp(xml.main.contents[i].keyPath,i); //xmlから画像やswfのパスを読みこみます
}
}
//この中で配置します
function mcComp(imgPath:String,i:int):MovieClip{
var mc:MovieClip = new MovieClip();
mc.imgLoader = new Loader();
mc.mcPath = imgPath;
var path:URLRequest = new URLRequest(mc.mcPath);
mc.imgLoader.load(path);
mc.imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader);
function compLoader(evt:Event):void {
mc.addChild(mc.imgLoader);
childSwf = mc.imgLoader.content as MovieClip;
}
mc.x = i * 50;
mc.y = 50;
return mc;
}
//大親のムービーが終わるとこれを実行します。
function startGo():void{
for(var i:int = 0;i < 9;i++) {
keyArray[i].addEventListener(MouseEvent.CLICK,keyClick);
}
}
function keyClick(evt:Event):void{
//もしクリックしたのがswfならそのswf内の関数を実行
if(keyArray[i].mcPath.lastIndexOf("swf") != -1){
childSwf = keyArray[i].imgLoader.content as MovieClip;
childSwf.keyContMove();
}
}
このソースもおかしな部分があったらすいません。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホでサイトの画像を長押し→...
-
potplayerについて質問です
-
法律的にはアウトですか?
-
FLASH MX で作成した、flashやA...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
送る・返るボタンでのインスタ...
-
for文を使ったボタン
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
テキストボックスにセルの値を...
-
static関数がmapファイルに載ら...
-
VB6.0 でメニューを作りたいん...
-
【VB.NET】別Formのボタンが押...
-
テキストエリア内の文字列にリ...
-
UWSCのBTN関数について。
-
RPG(AS400)の本、サイトってあ...
-
全てのテキストボックスをセル...
-
四乗根を英語で言うと・・・
-
ダブルクリックと2回クリックの...
おすすめ情報