Actionscript 3 通过静态类型访问未定义的属性
我得到一个错误:通过静态类型为Gold的引用访问可能未定义的属性destinationY。我不使用黄金级的destinationY属性。只有在主课上。 我对类和定义对象本身的属性仍然是个业余爱好者。请帮忙。谢谢 以下是主要课程:Actionscript 3 通过静态类型访问未定义的属性,actionscript-3,flash,Actionscript 3,Flash,我得到一个错误:通过静态类型为Gold的引用访问可能未定义的属性destinationY。我不使用黄金级的destinationY属性。只有在主课上。 我对类和定义对象本身的属性仍然是个业余爱好者。请帮忙。谢谢 以下是主要课程: package { import flash.display.MovieClip; import flash.display.Sprite; import flash.utils.Timer; import flash.event
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
public class Main extends MovieClip
{
private var field:Array;
public var gold:Gold;
public var goldContainer:Sprite = new Sprite();
private var goldTimer:Timer = new Timer(2000);
public function Main():void
{
setupField();
goldSet();
addEventListener(Event.ENTER_FRAME,onEnterFrm);
}
private function goldSet():void
{ addChild(goldContainer);
goldTimer.start();
goldTimer.addEventListener(TimerEvent.TIMER, newGold);
}
private function newGold(e:TimerEvent):void {
var goldRow:int=Math.floor(Math.random()*5);
var goldCol:int=Math.floor(Math.random()*9);
gold = new Gold(this);
gold.buttonMode=true;
goldContainer.addChild(gold);
gold.x=30+goldCol*65;
gold.destinationY = 35+goldRow*75;
gold.y=-2
}
private function onEnterFrm(e:Event):void {
for (var i:uint=0; i<goldContainer.numChildren; i++) {
var fallingGold:Gold=goldContainer.getChildAt(i) as Gold;
if (fallingGold.y<fallingGold.destinationY) {
fallingGold.y++;
} else {
fallingGold.alpha-=0.01;
if (fallingGold.alpha<0) {
goldContainer.removeChild(fallingGold);
}
}
}
}
}
}
乍一看,您的
Gold
类中没有destinationY
属性MovieClip
也没有此属性,因此您试图操作一个不存在的变量
当然,除非这不是你给我们看的全部课程
详述
我不使用黄金级的destinationY属性。只是大体上
班级
是的,但是您正试图操纵主类的黄金类中名为destinationY的属性
如果您这样做:
public class Gold extends MovieClip
{
private var _main:Main
private var gold:Gold;
public var destinationY:int = 0;
...
}
您不应该再出现此错误,但我怀疑这会解决所有问题。在主类的第xx行,您有以下代码:
gold.destinationY = 35+goldRow*75;
您试图访问Gold类的“destinationY”属性,但Gold类没有名为destinationY的公共属性。要添加它,只需将此行添加到Gold类:
public var destinationY;
您能告诉我们错误是在哪一行抛出的吗?非常感谢您的解释!首先,我尝试将1个主类和gold.destinationY中的所有代码组合在一起。destinationY在没有在public var中定义的情况下工作得很好,然后我尝试将其分为gold类和主类。我从来不知道是否需要在另一个类中首先定义它。不管怎样,如果gold.destinationY只在主类中,而没有在公共变量中定义,那么您能解释一下为什么它可以工作吗?我还没有真正了解这些事情。谢谢谢谢我以前不知道它也需要在另一个类中定义。因为当我试着把所有的东西都放在一节课上。destinationY不需要在public var中定义,它仍然有效。你知道为什么会这样吗?
public var destinationY;