[問題] 動態將元件庫影片增加到舞台的問題

看板Flash作者 (王妃)時間16年前 (2010/05/01 23:32), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
想請問一下 我要將元件匯出給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

05/01 23:45, , 1F
要將DisplayObject直接或間接加到Stage的display list中
05/01 23:45, 1F

05/01 23:45, , 2F
否則stage屬性會是null
05/01 23:45, 2F

05/01 23:45, , 3F
可監聽 Event.ADDED_TO_STAGE 來判斷何時加到stage
05/01 23:45, 3F

05/01 23:46, , 4F
你把constructor裡面的code移到此listener即可
05/01 23:46, 4F

05/01 23:51, , 5F
所以是要加上哪一段程式碼呢.sorry..不是很了解..^^"
05/01 23:51, 5F

05/01 23:53, , 6F
是我要去修改Draggable附檔裡的constructor嗎
05/01 23:53, 6F

05/02 00:09, , 7F
在constructor監聽Event.ADDED_TO_STAGE
05/02 00:09, 7F

05/02 00:09, , 8F
然後把原本constructor的code移到listener
05/02 00:09, 8F

05/02 00:19, , 9F
成功了...感謝CJ大...又學到一招..^__^
05/02 00:19, 9F
文章代碼(AID): #1Bt4cfL5 (Flash)
文章代碼(AID): #1Bt4cfL5 (Flash)