Domanda

Sto giocando con un Physics Engine per AS3 e il codice seguente è sostanzialmente il ciao esempio mondiale. Tuttavia, ho apportato una leggera modifica dichiarando la proprietà "palla". come WheelParticle all'inizio della definizione della classe. (perdona la mia terminologia se è sbagliata). In precedenza, era stato dichiarato all'interno del costruttore come

var ball:WheelParticle = new WheelParticle(...);

e ha funzionato bene. Ma ora, provando a modo mio, ricevo l'errore

  

Coercizione implicita di un valore di tipo   org.cove.ape.WheelParticle in un   tipo non correlato Classe |   palla: WheelParticle = new ... etc etc

     

" assegnazione illegale alla classe   WheelParticle "

Quindi sto pensando che la mia dichiarazione public var ball: WheelParticle dovrebbe essere qualcos'altro. Ma cosa?

Comunque, ecco il codice. È abbastanza corto. Vorrei fare riferimento alla documentazione, ma non c'è nessuno. Nessuno che riesca a trovare comunque.

package {

    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();
      }
   }

}

È stato utile?

Soluzione

Importa la classe WheelParticle (insieme a ogni altra classe di cui hai bisogno) esplicitamente come:

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 {

L'importazione mancante è la causa più probabile dell'errore. Inoltre, nota che il tuo codice di esempio ha un piccolo problema tecnico.

 public class Bounce extends Sprite {

     public var ball:WheelParticle;

dichiara una variabile membro per la classe Bounce di tipo WheelParticle chiamata ball .

var ball:WheelParticle = new WheelParticle(250,10,40, false, 1, 0.7, 0.1);

Crea un'altra variabile con lo stesso tipo e lo stesso nome ma locale al costruttore di Bounce . E questo ombreggia il primo. Se vuoi usare la variabile membro usa:

ball = new WheelParticle(250,10,40, false, 1, 0.7, 0.1);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top