我得到的错误是:
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;
}
}
}
答案 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。