我正在玩Physics Engine for AS3,下面的代码基本上是hello world示例。但是,我通过在类定义的开头将属性“ball”声明为WheelParticle做了一些改变。 (如果错的话,请原谅我的术语)。之前,它在构造函数中声明为
var ball:WheelParticle = new WheelParticle(...);
并且工作正常。但现在,按照我的方式尝试我得到错误
类型值的隐式强制 org.cove.ape.WheelParticle to a 无关类型Class | ball:WheelParticle = new ... etc等
“非法转课 WheelParticle“
所以我认为我的宣言public var ball:WheelParticle
应该是别的。但是什么?
无论如何,这是代码。这很短。我会参考文档,但没有。无论如何我都无法找到。
包{
import org.cove.ape.*;
import flash.events.*;
import flash.display.Sprite;
public class Bounce extends Sprite {
public var ball:WheelParticle;
public function Bounce() {
stage.focus = this;
stage.frameRate = 100;
addEventListener(Event.ENTER_FRAME, run);
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveLeft);
APEngine.init(0.3);
APEngine.container = this;
APEngine.addMasslessForce(new Vector(0,2));
var defaultGroup:Group = new Group();
defaultGroup.collideInternal = true;
var ball:WheelParticle = new WheelParticle(250,10,40, false, 1, 0.7, 0.1);
defaultGroup.addParticle(ball);
var rp:RectangleParticle = new RectangleParticle(250,300,300,50,0,true);
defaultGroup.addParticle(rp);
APEngine.addGroup(defaultGroup);
}
private function moveLeft(e:Event):void{
ball.speed += 1;
}
private function run(evt:Event):void {
APEngine.step();
APEngine.paint();
}
}
}
答案 0 :(得分:2)
将WheelParticle
类(以及您需要的所有其他类)明确地导入:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import org.cove.ape.APEngine;
import org.cove.ape.Group;
import org.cove.ape.RectangleParticle;
import org.cove.ape.Vector;
import org.cove.ape.WheelParticle;
public class Bounce extends Sprite {
缺少导入是导致错误的最可能原因。另请注意,您的示例代码有一个小故障。
public class Bounce extends Sprite {
public var ball:WheelParticle;
声明名为Bounce
的类型为WheelParticle
的类ball
的成员变量。
var ball:WheelParticle = new WheelParticle(250,10,40, false, 1, 0.7, 0.1);
创建另一个具有相同类型和相同名称的变量,但Bounce
的构造函数是本地变量。这一个影响了前者。如果要使用成员变量,请使用:
ball = new WheelParticle(250,10,40, false, 1, 0.7, 0.1);