如何在Flash中修复此隐式强制错误?

时间:2009-03-13 16:18:32

标签: flash actionscript-3 physics

我正在玩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();
      }
   }

}

1 个答案:

答案 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);