2016-08-15 1 views
0

Je reçois donc une erreur "Erreur # 1063: Incompatibilité du nombre d'arguments". Ce qui est bizarre, c'est que ça n'empêche pas le jeu de fonctionner, mais j'aimerais savoir pourquoi j'ai même une erreur en premier lieu. L'erreur complète est:Mystère Erreur # 1063: Incompatibilité du nombre d'arguments

ArgumentError: Error #1063: Argument count mismatch on Hock(). Expected 3, got 0. 
    at flash.display::Sprite/constructChildren() 
    at flash.display::Sprite() 
    at flash.display::MovieClip() 
    at PlayScreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\PlayScreen.as:30] 
    at Main/addPlayscreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\Main.as:17] 
    at Main()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\Main.as:13] 
    at runtime::ContentPlayer/loadInitialContent() 
    at runtime::ContentPlayer/playRawContent() 
    at runtime::ContentPlayer/playContent() 
    at runtime::AppRunner/run() 
    at ADLAppEntry/run() 
    at global/runtime::ADLEntry() 

Le code pour écran de lecture est:

import flashx.textLayout.formats.BackgroundColor; 
import flash.display.SimpleButton; 
import flash.ui.Mouse; 
import flash.text.TextField; 
import flash.display.MovieClip; 
import flash.events.Event; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.events.MouseEvent; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 

public class PlayScreen extends MovieClip 
{ 

    public var batArmy:Array; 
    public var hockArmy:Array; 
    public var shadow:Shadow; 
    public var crossHairs:CrossHairs; 
    var Layer01:MovieClip; 
    var Layer02:MovieClip; 
    var Layer03:MovieClip; 
    var Layer04:MovieClip; 
    var Layer05:MovieClip; 
    var randomX:Number = 300 + (660 - 300) * Math.random(); 

    public function PlayScreen() 
    { 
     //Mouse.hide(); 
     addBatButton.addEventListener(MouseEvent.CLICK, addBat); 
     addHockButton.addEventListener(MouseEvent.CLICK, addHock); 
     batArmy = new Array(); 
     hockArmy = new Array(); 
     //addEventListener(Event.ENTER_FRAME, crossHairsMove); 
     //stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress); 

     Layer01 = new MovieClip; 
     this.addChild(Layer01); 
     Layer02 = new MovieClip; 
     this.addChild(Layer02); 
     Layer03 = new MovieClip; 
     this.addChild(Layer03); 
     Layer04 = new MovieClip; 
     this.addChild(Layer04); 
     Layer05 = new MovieClip; 
     this.addChild(Layer05); 


     //add crossHair 


     /*crossHairs = new CrossHairs(mouseX,mouseY,this); 
     Layer05.addChild (crossHairs); 
     addEventListener(Event.ENTER_FRAME, crossHairsMove);*/ 


    } 
    /*public function onKeyPress(keyboardEvent:KeyboardEvent):void 
    { 
     if (keyboardEvent.keyCode == Keyboard.DOWN) 
     { 
      trace("yar"); 
      addBat; 
     } 
    }*/ 
    public function addBat(mouseEvent:MouseEvent):void 
    { 
     var randomX:Number = 300 + (660 - 300) * Math.random(); 
     var newBat = new Bat(randomX, -50, this); 
     batArmy.push (newBat); 
     Layer02.addChild (newBat); 
    } 
    public function addHock(mouseEvent:MouseEvent):void 
    { 
     var newHock = new Hock(-72, 170, this); 
     hockArmy.push (newHock); 
     Layer02.addChild (newHock); 
    } 
    /*public function crossHairsMove (e:Event):void 
    { 
     crossHairs.x = mouseX; 
     crossHairs.y = mouseY; 
    }*/ 
} 

et des regards de celui-ci l'erreur a quelque chose à voir avec la classe Hock, voici donc le code pour que:

import flash.display.MovieClip; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.ui.Mouse; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
import flash.events.Event; 

public class Hock extends MovieClip 
{ 
    private var _screen: PlayScreen; 
    public var xSpeed:Number; 

    public function Hock(startX:Number, startY:Number, screen:PlayScreen) 
    { 
     _screen = screen; 
     x = startX; 
     y = startY; 
     width = 100; 
     scaleY = scaleX; 
     addEventListener(Event.ENTER_FRAME, moveRightFar); 
     addEventListener(Event.ENTER_FRAME, moveSpeed) 
    } 
    public function moveSpeed(e:Event):void 
    { 
     x += xSpeed; 
    } 
    public function moveRightFar (e:Event): void 
    { 
     if (x < 0) 
     { 
      gotoAndStop("rollRight"); 
      xSpeed = 13; 
     } 
     else if (x >= 240) 
     { 
      gotoAndStop("still") 
      xSpeed = 0; 
     } 
    } 

} 

maintenant, je peux me tromper, mais je pense qu'il est un problème avec var newHock = new Hock(-72, 170, this); dans la fonction « addHock », mais j'ai 3 arguments là, pas 0. droit? Quoi qu'il en soit, comme je l'ai dit, ça n'empêche pas le jeu de fonctionner, mais c'est un peu ennuyeux, donc tout point de vue est le bienvenu. Je suis sûr que c'est quelque chose d'évident. Merci!

Répondre

0

J'ai une supposition, mais je vais vous expliquer comment je suis arrivé en premier ...

la première ligne du stacktrace pointant votre code source est
at PlayScreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\PlayScreen.as:30]
qui pointe à la première ligne le constructeur de écran de lecture: addBatButton.addEventListener(MouseEvent.CLICK, addBat);
mais il est évident que le problème est pas là ...

mais étend écran de lecture MovieClip et puisque vous didn 't spécifiquement inclus super() déclaration, le compilateur mettra à comme la première commande. En fait, les lignes précédentes du point de pile au constructeur de MovieClip, puis à une méthode constructChildren() mystérieuse de Sprite

qui se trouve être une méthode interne utilisée pour créer les Childs du Sprite que vous avez peut-être configuré la scène de votre clip directement à partir d'Animate.

Donc, je suppose, le joueur tente de instancier un symbole qui étend Hock et que vous positionné sur la scène quelque part, et bien sûr le fait par zéro arguments en passant parce que c'est ce qu'un normale Sprite serait attendre.

Vérifiez votre bibliothèque pour voir ce qui s'étend Hock et puis voir lequel de ceux-ci est placé dans l'étape d'un autre symbole. Vos options seront alors de supprimer cela et de le créer à partir du code ou de retravailler la signature de la classe pour prendre zéro argument.