第108行1136:参数数量不正确。预期1

时间:2014-01-15 22:27:08

标签: actionscript-3 flash sprite flash-cs6

我无法修复此错误,当我这样做时会导致另一个错误。我希望能够按下“71”键并将一个新的movieclip实例添加到舞台上。有什么建议?我是一个新手所以可能有很多错误...

包{

import flash.display.MovieClip; //imports needed
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.engine.EastAsianJustifier;
import flash.events.KeyboardEvent;
import flash.display.Stage;
public class myJellyFish extends MovieClip {

    private var startScaleX:Number;
    private var startScaleY:Number;
    //private var cliqued:Number;
    private var stayonscreenLeft:Number;
    private var stayonscreenRight:Number;
    private var stayonscreenTop:Number;
    private var stayonscreenBottom:Number;

    private var moveDirection:Number;
    private var speed:Number;
    private var turnspeed:Number;


    public function myJellyFish() {



        startScaleX = this.scaleX;
        startScaleY = this.scaleY;
        stayonscreenBottom = 400;
        stayonscreenRight = 500;
        stayonscreenLeft = 5;
        stayonscreenTop = 5;
        moveDirection = .5;
        speed = Math.random()*10;
        turnspeed = 25;

        this.addEventListener(MouseEvent.ROLL_OVER, scrolledOver);
        this.addEventListener(MouseEvent.ROLL_OUT, scrolledOff);
        this.addEventListener(MouseEvent.CLICK, directionChange);
        this.addEventListener(Event.ENTER_FRAME, life)


        trace("custom class be a working");
        // constructor code
    }

    function myMethod () {
        trace("method also be a workin'");
        }

    private function scrolledOver(Event:MouseEvent):void{
        this.alpha = .5;
        }

    private function scrolledOff(Event:MouseEvent):void{
        this.alpha = 1;
        }
    private function directionChange(e:Event):void{
        moveDirection = moveDirection * -1;
        }
    private function life(e:Event):void{
        if (moveDirection > 0){
            Hmovement();
            }
        if (moveDirection < 0){
            Vmovement();
            }
        }
    private function Vmovement():void{
        this.y += speed;

        if(this.y <= stayonscreenBottom){
            speed = speed * -1;
            this.startScaleY * -1;
            }
        if(this.y >= stayonscreenTop){
            speed = speed * -1;
            this.startScaleY * -1;
            }
        }
        private function Hmovement():void{
            this.x += speed;

            if(this.x >= stayonscreenRight){
                speed = speed * -1;
                }
            if(this.x <= stayonscreenLeft){
                speed = speed * -1;
                }
            }
        private function generate(e:KeyboardEvent):void{

            var movieClip:myJellyFish = new myJellyFish();
            addChild(movieClip); 
            movieClip.x = (Math.random() * 200) + 20; 
            movieClip.y = (Math.random()*200) + 20;
            movieClip.name = "jellyfish";
            }



        public function moreClips (event:KeyboardEvent){            //if that key is "F" it will play the tween
            trace(event.keyCode);

            if (event.keyCode == 71){ 
            generate();
            }

        }

    }//end class

}//end package

2 个答案:

答案 0 :(得分:1)

首先,正如Rin所说,调用generate函数时会出现参数错误。

其次,您需要添加KeyboardEvent ref侦听器才能接收键盘事件。

监听键盘事件的最简单方法是将监听器添加到Stage(因为无论触发它们的位置,KeyboardEvents都会冒泡到舞台上。)为了获得对舞台的引用,你需要等到你的MovieClip被添加到DisplayList(当你的myJellyFish实例被添加为某个孩子的时候)。

您可以通过收听Event.ADDED_TO_STAGE事件来执行此操作。

// Your constructor
public function myJellyFish() {
    // ...
    // Add event listener which will trigger when 
    // the MovieClip has been added to the DisplayList
    this.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
}

protected function handleAddedToStage(e:Event):void {
    // Remove event listener since it's no longer needed
    this.removeEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);

    // You now have a reference to the stage, let's add the KeyboardEvent listener
    stage.addEventListener(KeyboardEvent.KEY_DOWN, moreClips);
}

编辑:修复了removeEventListener中的拼写错误。

答案 1 :(得分:0)

你的generate函数有一个参数,它是e:KeyboardEvent,因为你有函数moreClips,alredy有KeyboardEvent,你不需要generate函数的参数。

基本上你现在正在做的是调用没有参数的generate()函数。您应该做的就是从函数中删除参数。

private function generate():void{
        var movieClip:myJellyFish = new myJellyFish();
        addChild(movieClip); 
        movieClip.x = (Math.random() * 200) + 20; 
        movieClip.y = (Math.random()*200) + 20;
        movieClip.name = "jellyfish";
}