看板 Flash 關於我們 聯絡資訊
想請問一下 我要將元件匯出給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