将“this”关键字从as2转换为as3

时间:2013-07-30 06:16:35

标签: actionscript-3 this actionscript-2

我是动作脚本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”。

请帮忙!

2 个答案:

答案 0 :(得分:0)

as2 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的预期值。