ActionScript 3.0错误1010

时间:2014-01-08 21:01:41

标签: actionscript-3 flash actionscript

我试图编辑这个糟糕的蛇版动作脚本,用作我正在使用的网站中的娱乐内容。我的问题是1010错误,对我来说似乎没有意义。我试过调试没有成功。

显示的第一个输出内容如下:

  

对于可以在运行时编辑的任何文本,应嵌入字体,而不是使用"使用设备字体"设置。使用文字>字体嵌入命令嵌入字体。

每当我的蛇吃食物(可以这么说)时,我都会收到错误:

  

TypeError:错误#1010:术语未定义且没有属性。       在Main / onEnterFrame()

完整的代码是:

package{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event; //used for ENTER_FRAME event

public class Main extends MovieClip{
    const speed:int = 20;//speed of the snake
    var score:int;
    var vx:int;
    var vy:int;
    var head:SnakePart;
    var gFood;
    var SnakeDirection:String;
    var snake:Array;

    public function Main(){
        init();
    }
    function init():void {
        //Initialize everything!
        vx = 1; vy = 0;
        score = 1;
        snake = new Array();
        SnakeDirection = "";
        //add food to the stage
        addFood();
        //add snakes head to the stage
        head = new SnakePart();
        head.x = stage.stageWidth/2;
        head.y = stage.stageHeight/2;
        snake.push(head);
        addChild(head);

        stage.addEventListener(KeyboardEvent.KEY_UP , onKeyUp);
        stage.addEventListener(KeyboardEvent.KEY_DOWN , onKeyDown);
        addEventListener(Event.ENTER_FRAME , onEnterFrame);
        //ENTER_FRAME listener is attached to main class and not to the stage directly
    }
    //This function will add food to the stage
    function addFood():void {
            if(score%2==0){
                gFood = new SnakePart();
            }else{
                gFood = new Food();
            }
        gFood.x = 50 + Math.random()*(stage.stageWidth-100);
        gFood.y = 50 + Math.random()*(stage.stageHeight-100);
        addChild(gFood);
    }
    //this function will reset the game
    function reset():void {
        removeChild(gFood);
        addFood();
        head.x = stage.stageWidth/2;
        head.y = stage.stageHeight/2;
        vx = 1;vy = 0;

        for(var i = snake.length-1;i>0;--i){
            removeChild(snake[i]);
            snake.splice(i,1);
        }
    }
    function onKeyDown(event:KeyboardEvent):void{
        if(event.keyCode == Keyboard.LEFT){
           SnakeDirection = "left";
        }else if (event.keyCode == Keyboard.RIGHT) {
           SnakeDirection = "right";
        }else if (event.keyCode == Keyboard.UP) {
            SnakeDirection = "up";
        }else if (event.keyCode == Keyboard.DOWN) {
            SnakeDirection = "down";
        }
    }
    function onKeyUp(event:KeyboardEvent):void {
        if(event.keyCode == Keyboard.LEFT) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.RIGHT) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.UP ) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.DOWN){
            SnakeDirection = "";
        }
    }
    function onEnterFrame(event:Event):void {
        //setting direction of velocity
        if(SnakeDirection == "left" && vx != 1) {
            vx = -1;
            vy = 0;
            //head.rotate(-90);
        }else if(SnakeDirection == "right" && vx != -1) {
            vx = 1;
            vy = 0;
        }else if(SnakeDirection == "up" && vy != 1) {
            vx = 0;
            vy = -1;
        }else if(SnakeDirection == "down" && vy != -1) {
            vx = 0;
            vy = 1;
        }

        //collison with stage
        if(head.x - head.width/2 <= 0){
            score = 0;
            reset();
        }
        if(head.x + head.width/2 >= stage.stageWidth){
            score = 0;
            reset();
        }
        if(head.y - head.height/2 <= 0){
            score = 0;
            reset();
        }
        if(head.y + head.height/2 >= stage.stageHeight){
            score = 0;
            reset();
        }
        //move body of the snake
        for(var i = snake.length-1;i>0;--i){
            snake[i].x = snake[i-1].x;
            snake[i].y = snake[i-1].y;
        }
        //changing the position of snake's head
        head.x += vx*speed;
        head.y += vy*speed;
        //collision with tail
        for(var i = snake.length-1;i>=1;--i){
            if(snake[0].x == snake[i].x && snake[0].y == snake[i].y){
                reset();
                break;
            }
        }
        //collision with food
        if(head.hitTestObject(gFood)){
            score += 1;
            removeChild(gFood);
            addFood();
            var bodyPart;
            if(score%2==0){
                bodyPart = new Food();
            }else{
                bodyPart = new SnakePart();
            }
            bodyPart.x = snake[snake.length - 10].x;
            bodyPart.y = snake[snake.length - 10].y;
            snake.push(bodyPart);
            addChild(bodyPart);
        }
        //display scores
        txtScore.text = String(score);
    }
}

}

随意提问!

1 个答案:

答案 0 :(得分:0)

基于我们的谈话,这似乎是解决方案

  1. 对于字体,找到动态的文本字段,然后在属性面板中选择嵌入,然后检查您需要嵌入的字符,否则它们可能不会在运行时显示

  2. 运行时1010错误,在你的onEnterFrame方法中,似乎有一个空参数:head,stage,snake或txtScore。

  3. 建议安装Flash播放器调试,以准确告诉您错误在哪一行: http://www.adobe.com/support/flashplayer/downloads.html

相关问题