作者cloudfly (王妃)
看板Flash
標題[問題] 動態將元件庫影片增加到舞台的問題
時間Sat May 1 23:32:54 2010
想請問一下
我要將元件匯出給ActionScript使用
但沒有要把影片元件先拉到場景中
而是要用語法動態加入元件在場景上(譬如想增加多個的時候)
var _mc:Draggable=new Draggable();
this.addChild(_mc);
在連結部分我也有設定好
類別:Draggable
基底類別:flash.display.MovieClip
會出給ActionScript共用跟匯出在第一個影格也有打勾
而此元件的功能我是另外撰寫在Draggable.as
設定它的拖曳事件
package {
import flash.display.MovieClip;
import flash.display.DisplayObjectContainer;
import flash.events.MouseEvent;
public class Draggable extends MovieClip {
function Draggable():void {
//trace(this)
this.addEventListener(MouseEvent.MOUSE_DOWN, mPress);
stage.addEventListener(MouseEvent.MOUSE_UP, mRelease);
}
public function mPress(e:MouseEvent):void {
var p:DisplayObjectContainer = this.parent;
//p.removeChild(this);
p.addChild(this);
this.startDrag();
}
public function mRelease(e:MouseEvent):void {
this.stopDrag();
}
}
}
但執行時產生錯誤訊息
TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。
at Draggable()
at 11_fla::MainTimeline/frame1()
如果我先把該元件拉到場景裡的話,就可以正常執行。
請問這樣是什麼問題呢?
這樣是不是就代表無法動態增加這些影片片段
而是要先把要用的都拉到場景上
但是這樣就有點麻煩,麻煩大家幫我解答一下了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.120.130.116
推 cjcat2266:要將DisplayObject直接或間接加到Stage的display list中 05/01 23:45
→ cjcat2266:否則stage屬性會是null 05/01 23:45
→ cjcat2266:可監聽 Event.ADDED_TO_STAGE 來判斷何時加到stage 05/01 23:45
→ cjcat2266:你把constructor裡面的code移到此listener即可 05/01 23:46
→ cloudfly:所以是要加上哪一段程式碼呢.sorry..不是很了解..^^" 05/01 23:51
→ cloudfly:是我要去修改Draggable附檔裡的constructor嗎 05/01 23:53
推 cjcat2266:在constructor監聽Event.ADDED_TO_STAGE 05/02 00:09
→ cjcat2266:然後把原本constructor的code移到listener 05/02 00:09
→ cloudfly:成功了...感謝CJ大...又學到一招..^__^ 05/02 00:19