动作脚本 3,Flash 开发。错误我不知道如何解决
Action Script 3, Flash Develop. Error I don't know how to resolve
我得到的错误是:
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;
}
}
}
如果您在以下行之后可能会发生:
[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;
提供更多关于@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;
这个 post (http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf60546-7ff2.html) 很好地概述了 [Embed]
元标记 - 只需专注于 <fx:Script>
之间的代码并忽略 [Bindable]
metatag - 这只对 flex 有用。
我得到的错误是:
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;
}
}
}
如果您在以下行之后可能会发生:
[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;
提供更多关于@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;
这个 post (http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf60546-7ff2.html) 很好地概述了 [Embed]
元标记 - 只需专注于 <fx:Script>
之间的代码并忽略 [Bindable]
metatag - 这只对 flex 有用。