【发布时间】:2014-03-31 20:55:02
【问题描述】:
我对课程和东西还是很陌生。所以,我试着做这个,但我得到了一个错误:未定义属性的访问。 为什么 speedX 和 speedY var 尽管我已经在主类的 public var 中定义了它,但仍然出错?
谢谢!
已编辑:我尝试使用 main.speedX 和 main.speedY 从其他类调用变量 但出现错误:无法访问空对象引用的属性或方法。 在球/moveBall()
这是主要代码:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip
{
public var speedX:Number = 5;
public var speedY:Number = 5;
public var speedMax:Number = 10;
private var ball:MovieClip = new Ball();
private var paddle:MovieClip = new Paddle();
public function Main()
{
paddle.addEventListener(Event.ENTER_FRAME, movePaddle);
addChild(ball);
addChild(paddle);
}
}
}
这是 Ball 电影剪辑代码:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Ball extends MovieClip
{ public var main:Main;
public function Ball()
{addEventListener(Event.ENTER_FRAME, moveBall);
main= new Main();
}
public function moveBall(e:Event):void
{
x += main.speedX;
y += main.speedY;
}
}
}
【问题讨论】:
-
传递值不起作用,因为您没有将值存储在球中。 aduch answer 有效,因为它传递了值,然后将它们存储在 Ball 中。澄清一下,公共变量不是全局变量。它们允许您从类外部访问类的值,但您仍然必须引用该类。因此,如果您将 main 的引用传递给 ball,您可以在 ball 中执行类似“_main.speedX”之类的操作,但在 ball 中单独使用“speedX”将无济于事。
-
我已经编辑了代码。通过使用 main.speedX 引用 Main 类来使用其他类的 var。但后来我得到了一个错误。我想我错过了一些东西。任何想法?谢谢!
-
您遇到什么错误? Actionscript 的一个很好的参考是 Colin Moock 的 Essential Actionscript 3.0。
-
此错误:无法访问空对象引用的属性或方法。在 Ball/moveBall() 处。那是一本书吗?
-
是的。 EA 3.0 是一本关于 AS 的开创性书籍,尽管旧版 AS3 仍然是 AS3。它可能会遗漏添加一些较新的 AS3 添加的细节,但这些更多与特定实现有关,例如 AIR
标签: actionscript-3