错误1009,我真的不明白为什么会这样

时间:2013-12-12 17:40:11

标签: actionscript-3 flash function class inventory

我想在鼠标悬停时显示项目名称。项目名称变量在项目类中。我在场景中有一个叫做苹果的物体。我在代码中将其命名为“Apple”。当我在同一代码的函数中调用itemName时,它表示当鼠标悬停在对象上时它没有被定义。如果我在函数外部追踪apple.itemName,它就可以了。我不知道为什么。这是我的代码:

我场景中的代码:

import flash.events.MouseEvent;
import inventory.inventorySystem;
import inventory.item;

var IS:inventorySystem;
var IT:item;

apple.itemName = "Apple";
apple.itemIcon = new AppleIcon();
apple.addEventListener(MouseEvent.MOUSE_OVER, showItemNameF);

function showItemNameF(Event:MouseEvent){
    var itemNameBox:TextField;
    itemNameBox.text = this.itemName;
    itemNameBox.x = mouseX;
    itemNameBox.y = mouseY;
}

项目类:

package inventory {

    import flash.display.MovieClip;

    public class item extends MovieClip{

            public var itemName:String;
        public var itemIcon:MovieClip;
    }
}

1 个答案:

答案 0 :(得分:1)

事件处理函数中的

this不会引用您的apple实例。 (您是从AS2来的吗?)this是您的类/时间轴的引用,其中您的侦听器代码位于其中,并且没有定义任何itemName变量。为了能够检索名称,您必须执行以下操作:

Apple(e.currentTarget).itemName //assuming that Apple is your class of the apple instance.