基本的as3语法/错误

时间:2013-02-27 01:59:03

标签: actionscript-3 flash

    package
    {
include flash.events.* //1084: Syntax error: expecting stringliteral before flash.
include flash.ui.*

public class tank () //1068: Unable to open included file: /Volumes/scottthreet/Documents/FLASH/tankdrive/leftbrace. 1084: Syntax error: expecting rightbrace before leftbrace.
    this.addEventListener(Event.ENTER_FRAME, update);
    stage.addEventListener(KeyBoardEvent.KEY_DOWN, onKeyDown);
    stage.addEventListener(KeyBoardEvent.KEY_UP, onKeyUp);

    var keys:Array = []; 

    function update(e:Event):void
    {
        var rotang:Int = 0;
        var speed:Int;
        if(keys[Key.I])
        {
            rotang = rotang + 1;
        }
        if(keys[Key.J])
        {
            rotang = rotang - 1;
        }
        if(keys[Key.W])
        {
            rotang = rotang - 1; 
        }
        if(speed > 0)
        {
            speed = speed - 1;
        }
        if(speed < 0)
        {
            speed = speed + 1;
        }
        if(keys[Key.S])
        {
            rotang = rotang + 1;
        }
        if(keys[Key.I] && keys[Key.W])
        {
            speed = speed + 3;
        }
        if(keys[Key.K] && keys[Key.S])
        {
            speed = speed - 3;
        }
        if(speed > 30)
        {
            speed = 30;
        }
        if(speed < -30)
        {
            speed = -30;
        }
        public function degreesToRadians(param1:Number) : Number
        {
            return param1 * Math.PI / 180;
        }
        this.vy +=  Math.sin(this.degreesToRadians(rotang)) *speed;
        this.vx += Math.cos(this.degreesToRadians(rotang))*speed;
        this.y = tank.y + tank.vy;
        this.x = tank.x + tank.vx;
        this.rotation = rotang * Math.PI / 180;
    }

    function onKeyDown(e:Event):void
    {
        keys[e.keyCode] = true;
    }

    function onKeyUp(e:Event):void
    {
        keys[e.keyCode] = false;
    }

}
    }

评论是我遇到错误的地方,我不明白它有什么问题...我没有通过谷歌搜索这些错误,只是其他形式的错误......

任何人都有一些基本的例子as3代码?出于某种原因,它希望我添加细节;要添加的细节不多......

1 个答案:

答案 0 :(得分:2)

首先,检查您的代码是否在类(.as)或fla中。 ActionScript 3.0基于类和基于脚本的语言。在.fla只是可用的脚本。你曾写过fla?如果正确,你必须用.as

As3 Class include语法不是include,而是import

include flash.events.* - &gt; import flash.events.*

在Class中,您的function()语法将限定为默认命名空间:internal。它不会在此包装外面看到。设置适合您的功能目的。

function bar();表示internal function bar();

  
      
  • 公开访问修饰符允许每个类访问
  •   
  • 内部访问修饰符允许共享此包访问权限的类
  •   
  • 受保护访问修饰符允许子类访问
  •   
  • 私有访问修饰符不允许外部访问
  •   

构造函数必须相同.as filename如下:

// MyClass.as

package 
{
  import flash.display.Sprite;
  public class MyClass extends Sprite 
  {
       public function MyClass() 
       {

       }
  }
}

这是Sample Class Ball。

// Ball.as

package
{
    import flash.display.Sprite;

    public class Ball extends Sprite
    {
        private var _color:uint;
        private var _radius:Number;
        private var _vx:Number = 0;
        private var _vy:Number = 0;

        public function Ball(radius:Number, color:uint = 0xffffff)
        {
            _radius = radius;
            _color = color;
            draw();
        }

        private function draw():void
        {
            graphics.clear();
            graphics.lineStyle(0);
            graphics.beginFill(_color, 1);
            graphics.drawCircle(0, 0, _radius);
            graphics.endFill();
            graphics.drawCircle(0, 0, 1);
        }

        public function update():void
        {
            x += _vx;
            y += _vy;
        }

        public function set color(value:uint):void
        {
            _color = value;
            draw();
        }

        public function get color():uint
        {
            return _color;
        }

        public function set radius(value:Number):void
        {
            _radius = value;
            draw();
        }

        public function get radius():Number
        {
            return _radius;
        }

        public function set vx(value:Number):void
        {
            _vx = value;
        }

        public function get vx():Number
        {
            return _vx;
        }

        public function set vy(value:Number):void
        {
            _vy = value;
        }

        public function get vy():Number
        {
            return _vy;
        }

    }
}

如果你想在Flash中使用,你的.fla文件和Ball.as文件位于同一目录。

并运行此脚本

var ball:Ball = new Ball(10,0x0000ff);
addChild(ball);

如果您想在Flash Builder中使用,Ball.as文件与您的src文件夹相同。

构建此类。如果您创建一个Project,则会自动创建同名Class。 ex)MyClass

// MyClass.as

package {

    import flash.display.Sprite;

        public class MyClass extends Sprite
        {
            public function MyClass() 
            {

                var ball:Ball = new Ball(10,0xff0000);
                ball.x = 10;
                ball.y = 10;
                addChild(ball);
            } 

        }
}

package blah.blah { }表示您的工作目录或文档src相对路径。例如,import flash.display.Sprite按以下语法打包:package flash.display.sprite。在Flash中,也许已经设置了Flash构建器ActionScript 3.0公共类。已经连接,所以它可以从任何文件夹中获得,我们会。如果要进行此设置检查,请参阅File-ActionScript Settings - Library path。默认路径如下:$(AppConfig)/ActionScript 3.0/libs.