2009-03-13 7 views
1

Je joue avec un Physics Engine for AS3 et le code ci-dessous est fondamentalement l'exemple de bonjour monde. Cependant, j'ai fait un léger changement en déclarant la propriété "ball" comme WheelParticle au début de la définition de la classe. (pardonnez ma terminologie si c'est faux). Avant, il a été déclaré dans le constructeur commeComment réparer cette erreur de coercition implicite dans Flash?

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

et qui a bien fonctionné. Mais maintenant, essayer mon chemin, je reçois l'erreur

d'une coercion explicite valeur de type org.cove.ape.WheelParticle à une classe de type sans lien | balle: WheelParticle = new "à la classe WheelParticle affectation illégale"

... etc etc

Je pense ma déclaration public var ball:WheelParticle devrait être autre chose. Mais quoi?

Quoi qu'il en soit, voici le code. C'est assez court. Je voudrais me référer à la documentation, mais il n'y en a pas. Rien que je puisse trouver de toute façon.

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

}

Répondre

2

importer la classe WheelParticle (ainsi que toutes les autres classes dont vous avez besoin) explicitement:

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 { 

Ce manque d'importation est la cause la plus probable votre erreur Notez également que votre exemple de code a un petit problème.

public class Bounce extends Sprite { 

    public var ball:WheelParticle; 

déclare une variable membre pour la classe Bounce de type WheelParticle appelé ball.

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

Crée une autre variable avec le même type et même nom, mais local au constructeur de Bounce. Et celui-ci occulte le premier. Si vous voulez utiliser la variable membre, utilisez:

ball = new WheelParticle(250,10,40, false, 1, 0.7, 0.1); 
Questions connexes