作者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
1F:推 cjcat2266:要将DisplayObject直接或间接加到Stage的display list中 05/01 23:45
2F:→ cjcat2266:否则stage属性会是null 05/01 23:45
3F:→ cjcat2266:可监听 Event.ADDED_TO_STAGE 来判断何时加到stage 05/01 23:45
4F:→ cjcat2266:你把constructor里面的code移到此listener即可 05/01 23:46
5F:→ cloudfly:所以是要加上哪一段程式码呢.sorry..不是很了解..^^" 05/01 23:51
6F:→ cloudfly:是我要去修改Draggable附档里的constructor吗 05/01 23:53
7F:推 cjcat2266:在constructor监听Event.ADDED_TO_STAGE 05/02 00:09
8F:→ cjcat2266:然後把原本constructor的code移到listener 05/02 00:09
9F:→ cloudfly:成功了...感谢CJ大...又学到一招..^__^ 05/02 00:19