动作脚本3,Flash Develop。错误我不知道如何解决

时间:2015-01-04 15:22:37

标签: actionscript-3


我得到的错误是:

F:\Game Techniques\FireBoy&WaterGirl\src\Hero.as(11): col: 3: Error:
An Embed variable must not have an existing value.

[Embed(source="../assets/FireBoy.jpg")]

请您解释一下这意味着什么,以及我如何解决它。

这是完整的代码

package  
{
    import flash.display.Bitmap;
    import flash.display.Sprite;

    /**
     * ...
     * @author Harry
     */
    public class Hero extends Sprite
    {
        [Embed(source="../assets/FireBoy.jpg")]

        public var grav:int = 0;
        public var floor:int = 580;

        private static const HeroFireBoy:Class;
        private var FireBoy:Bitmap;

        public function Hero() 
        {
            FireBoy = new Hero.HeroFireBoy();
            scaleX = 0.1;
            scaleY = 0.1;

            addChild(FireBoy);
        }
        public function adjust():void 
        {
            FireBoy.y += grav;
            if(FireBoy.y+FireBoy.height/2<floor)
                grav++;
            else 
            {
                grav = 0;
                FireBoy.y = floor - FireBoy.height / 2;
            }
            if (FireBoy.x - FireBoy.width / 2 < 0)
                FireBoy.x = FireBoy.width / 2;
            if (FireBoy.x + FireBoy.width / 2 > 800)
                FireBoy.x = 800 - FireBoy.width / 2;
        }

    }

}

2 个答案:

答案 0 :(得分:2)

如果你在行之后会发生这种情况:

[Embed(source="../assets/FireBoy.jpg")]

用值声明一些变量。 例如:

[Embed(source="../assets/FireBoy.jpg")] private var fireBoyClass:Class = null;

通常,在[Embed(source="../assets/FireBoy.jpg")]下一行之后应该声明与嵌入源相关联的变量。

public class SomeClass 
{
    [Embed(source = "../assets/FireBoy.jpg")]
    private var fireBoyClass:Class;

在您的情况下,只需移动行private static const HeroFireBoy:Class;即可 [Embed(source = "../assets/FireBoy.jpg")]

最终会看起来像:

public class Hero extends Sprite
{
    [Embed(source = "../assets/FireBoy.jpg")]
    private static const HeroFireBoy:Class;

    public var grav:int = 0;
    public var floor:int = 580;

答案 1 :(得分:0)

提供有关@Kir答案的更多信息;当您嵌入某些内容时,需要将其与Class类型的变量相关联,以便稍后创建它。这可以通过以下方式完成:

[Embed(source = "../assets/FireBoy.jpg")]
private var fireBoyClass:Class;

因为在您的示例中,fireBoyClass的行不存在,Flash认为您正在尝试将其与行关联

public var grav:int = 0;

这是给你错误的原因。

一旦声明了Class属性,就可以创建嵌入数据的实例:

public var fireBoyBitmap:Bitmap = ( new fireBoyClass ) as Bitmap;

这篇文章(http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf60546-7ff2.html)概述了[Embed]元标记 - 只关注<fx:Script>之间的代码并忽略[Bindable]元标记 - 这只是有用的对于flex。

相关问题