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で質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript gasについて 1 2022/05/31 21:51
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
for文を使ったボタン
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
漢字入力した値のカタカナ変換...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
else if文の順序を変えることに...
-
五芒星は、悪魔崇拝とどういう...
-
テキストボックスの中身をリセ...
-
楕円の軌道に傾斜をつける方法...
-
コモンダイアログのshowopenに...
-
Fireworks4の写真の切り取り方...
-
SNMPの標準MIBについて
-
upc 7915と mc7915ctは互換性有...
-
画面の範囲選択
-
Flash5:2つのGIF画像でシェイ...
-
オブジェクトのランダムな位置表示
-
DirectXでのicoファイル読み込み
-
【ExcelVBA】ファイル名をセル...
-
四乗根を英語で言うと・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
for文を使ったボタン
-
actionscript3.0 オブジェクト...
-
AS3.0 ループを利用したムービ...
-
複数mcのランダム再生とmc指定...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
プログラミング、アーキテクチ...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
RPG(AS400)の本、サイトってあ...
-
変数に256文字以上のテキストを...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
ダブルクリックと2回クリックの...
おすすめ情報