我已经将movieClip加载到舞台上并且正在该movieClip上执行一些事件。影片剪辑具有自己的公共函数和变量,并且不能通过事件中的currentTarget对象访问它们。
以下是示例类:
package {
import flash.display.MovieClip;
import flash.display.Shape;
public class SampleClass extends MovieClip {
var str:String;
public function SampleClass() {
str="Some string";
/* draw just a sample rectangle to click on it */
var rectangle:Shape=new Shape ;
rectangle.graphics.beginFill(0x000000);
rectangle.graphics.drawRect(0,0,100,100);
rectangle.graphics.endFill();
}
public function getStr():String {
return str;
}
}
}
这里正在加载舞台并创建活动:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class MainClass extends MovieClip {
var a:SampleClass;
public function MainClass() {
a=new SampleClass();
addChild(a);
a.addEventListener(MouseEvent.CLICK,clickEvent);
}
function clickEvent(evt:MouseEvent):void {
var Obj=evt.currentTarget;
trace (Obj.getStr());
}
}
}
跟踪将返回null
而不是string
值因为currentTarget
是Object
,而不是Class
(movieClip)。知道如何解决这个问题吗?
答案 0 :(得分:0)
//使用此代码可以使用
function clickEvent(evt:MouseEvent):void {
var Obj:SampleClass = evt.currentTarget as SampleClass;
trace (Obj.getStr());
}
答案 1 :(得分:0)
我不知道您的问题现在是否已解决,但您在问题中发布的代码对我来说没问题。
我做了什么测试..
rectangle.graphics.endFill();
之后..我还添加了行addChild(rectangle);
您的 MainClass.as 作为文档类附加到FLA(使用Ctrl + F3参见属性)
我希望这对您或尝试此类代码的任何其他人都有用。任何问题只是添加评论。感谢。