AS3載入外部.swf該如何控制呢?
看一下圖表
Loader載入檔案後會有三種情型
1.載入圖片(jpg,png,gif), 其content屬性會得到 Bitmap物件。
2.載入AS3所寫的SWF檔, 其content屬性會得到 [object MainTimeline]物件。
3.載入AS2或是AS1所寫的SWF檔,其content屬性會得到AVM1MOVIE物件。
function onLoaderComplete(e:Event) {
var _contentMC:MovieClip = e.currentTarget.loader.content as MovieClip;
//這時候_contentMC就可以代表child.swf
_contentMC.ball_mc.x = 100;
_contentMC.ball_mc.y = 300;
//可以修改物件的屬性。
//如果是載入圖檔就要寫
//var _content:Bitmap = e.currentTarget.loader.content as Bitmap;
//如果是載入AS2所寫的.swf檔,沒辦法直接呼叫該函式,
//要使用LocalConnection類別來做溝通
}
SourceCodeDownload
看一下圖表
Loader載入檔案後會有三種情型
1.載入圖片(jpg,png,gif), 其content屬性會得到 Bitmap物件。
2.載入AS3所寫的SWF檔, 其content屬性會得到 [object MainTimeline]物件。
3.載入AS2或是AS1所寫的SWF檔,其content屬性會得到AVM1MOVIE物件。
function onLoaderComplete(e:Event) {
var _contentMC:MovieClip = e.currentTarget.loader.content as MovieClip;
//這時候_contentMC就可以代表child.swf
_contentMC.ball_mc.x = 100;
_contentMC.ball_mc.y = 300;
//可以修改物件的屬性。
//如果是載入圖檔就要寫
//var _content:Bitmap = e.currentTarget.loader.content as Bitmap;
//如果是載入AS2所寫的.swf檔,沒辦法直接呼叫該函式,
//要使用LocalConnection類別來做溝通
}
SourceCodeDownload
留言
_contentMC.ball_mc.gotoAndPlay(2);
這樣好像控制不到
這段程式碼是寫在那兒呢
奶綠大大 我還想請教一個問題,如果是loader載入多個swf檔,但每次只播放一個swf,如何做效能才是最佳的呢?load一個unload另一個嗎?
要的時候
才addChild到容器
讓他出現
這樣效能會比較好
在flash cs3 AS3中
在同一個畫面裡..有多個按紐..連結多個swf檔
之前在論壇爬文找到了以下程式
stop();
a_btn.addEventListener(MouseEvent.CLICK,onClickA);
b_btn.addEventListener(MouseEvent.CLICK,onClickB);
function onClickA(e:MouseEvent):void {
var dust:Loader = new Loader();
LOADER_mc.addChild(dust);
dust.load(new URLRequest("dust.swf"));
}
function onClickB(e:MouseEvent):void {
var clean:Loader = new Loader();
LOADER_mc.addChild(clean);
clean.load(new URLRequest("clean.swf"));
}
結果第一個按鈕可以連結SWF檔
但第二個按鈕開始就不行
還出現ReferenceError: Error #1065: 變數 b_btn 未定義。
我不懂未定義是哪裡出現問題?
不好意思..我是新手..麻煩老師幫我解答..謝謝~!!
指的就是你的時間軸下
沒有一個叫b_btn的變數
查一下是不是名稱打錯
載入PV3D後再轉回(場景二)發現PV3D還在。為什麼? 可以幫忙想一下解決方法嗎? 謝謝!
我的電子信箱: shooter2062424@yahoo.com.tw
並不會讓使用new的物件消失
所以你要自已加程式把該物件移掉
xxx.removeChild(你的pv3d物件)
還是有什麼比較好的方法可以在Main去呼叫Aswf...
謝謝老師..麻煩您了!
就在載入complete之後
MovieClip(ldr.content).函式名()
按下後
叫子物件dispatchEvent(new Event("自定的事件名",true));
而Event的第二個參數就是開啟氣泡事件
我有一個 main 的 swf 叫 Game1
另一個是 789.swf
789.swf 中 有一個元件 叫 test1
我另一外新增一個圖層叫 AS 這裡面我寫了一段 function 如下:
function moving_left(){
test1.x = test1.x-1;
}
Game1 匯入 789.swf 後, 我希望可以呼叫上面這個函式!! 但是我下面的寫法沒有達成
希望老師指點
public class Game1 extends Sprite
{
private var loader:Loader = new Loader();
private var req:URLRequest;
private var _contentMC:MovieClip;
public function Game1()
{
req = new URLRequest("789.swf");
loader.load(req);
loader.addEventListener(Event.COMPLETE, onLoaderComplete);
}
private function onLoaderComplete(e:Event):void
{
_contentMC = evt.currentTarget.loader789.content as MovieClip;
_contentMC.AS.moving_left();
this.addChild(_contentMC);
_contentMC.x = 100;
_contentMC.y = 100;
}
}
關於上面發問的問題, 我再加以說明一下,
我的 Game1 是使用 Flex 建立 Flex project 所以產生的,
想請問 ~ 我可以在 Game1 中 load 另一個 swf 後, 並呼叫這個外部 swf 中的 function 並且傳值或接收 swf 的回傳?
_contentMC.moving_left();
我用flash cs4 做了一個按鈕( btn.swf ), 當觸發 MouseUP 時, 希望能呼叫在 Flex Buider 裡頭的 .as 檔, 並執行其中的 function ….. 想請問老師能否這樣做?? 謝謝老師
swf 和 as 是不同的東西也
我想跟您請教一個問題.
我在主場景寫了一個偵聽外部swf檔的程式,將之載入主場景的a_loader元件. 外部swf有一個按鈕叫做a_btn ,我希望在外部swf裡的a_btn按下去之後主場景跑到第1影格.
根據以下的程式,我如果不加上a_btn的按鈕名稱,它是可以偵測到外部swf按鈕事件並執行(但不能指定特定按鈕). 但我如果加上a_btn的名稱,功能就失效了. 我想我應該是加語法的方式錯了或有其它寫不完整的地方,因為我其實不太熟as3,目前的功力還只能套程式而以,還請老師指正一下,謝謝!
a_loader.a_btn.addEventListener(MouseEvent.CLICK, CLICK);
function CLICK(e:MouseEvent):void{
gotoAndStop(1);
}