我是动作脚本3中的新手我将“this”关键字从as2转换为as3时遇到问题。 请帮帮我!
谢谢!
我的as2代码是:
var selected = MovieClip(null);
j = 1;
while (j++, j <= 11)
{
var obj_1 = this["shape" + j];
obj_1.highlight._visible = false;
obj_1.onPress = function()
{
if (_root.selected)
{
_root.selected.highlight._visible = false;
}
// end if
this.highlight._visible = true;
_root.selected = this;
trace(this)
};
}// end while
我的as3代码是:
var selecteD = MovieClip(null);
var j:int = 1;
while (j < 11)
{
j++;
var obj_1:MovieClip = this['shape' + j];
//trace(obj_1);
obj_1.highlight.visible = false;
obj_1.addEventListener(MouseEvent.CLICK, pressed);
function pressed(event:MouseEvent):void
{
if (MovieClip(root).selecteD)
{
trace(MovieClip(root).selecteD);
selecteD.highlight.visible = false;
}
MovieClip(root).selecteD = **this**;
MovieClip(root).selecteD.highlight.visible = true;
}
}
当我跟踪此结果时,结果来自as3中的对象主时间轴 但是在as2中它是level0.shape11
我怎么能为这个项目转换“this”。
请帮忙!
答案 0 :(得分:0)
this
中的是指将onPress
函数添加到obj1
的对象。
在as3 this
中引用了函数定义的类/对象,在本例中是您的主时间轴。在as3中,您可以从MouseEvent
while (j < 11)
{
j++;
var obj_1:MovieClip = this['shape' + j];
//trace(obj_1);
obj_1.highlight.visible = false;
obj_1.addEventListener(MouseEvent.CLICK, pressed);
function pressed(event:MouseEvent):void
{
if (MovieClip(root).selecteD)
{
trace(MovieClip(root).selecteD);
selecteD.highlight.visible = false;
}
var clickedObject:MovieClip = event.currentTarget as MovieClip;
MovieClip(root).selecteD = clickedObject;
MovieClip(root).selecteD.highlight.visible = true;
}
}
答案 1 :(得分:0)
documentation字很好:
对方法包含对象的引用。脚本执行时,
this
关键字引用包含脚本的对象。在方法体内,this
关键字引用包含被调用方法的类实例。
值得注意的是,{3}}和Function.call()
仍然存在于AS3中,在某些情况下可能会改变this
的预期值。