Actionscript 3 改变世界';他在Flash朋克
我试图在AS3中制作我的第一个实际的游戏,因为它简单,所以我使用flashpunk 当我走到门前时,我有一个移动的角色和一个文本框 当我站在门前时,玩家类中的两个变量发生了变化:Actionscript 3 改变世界';他在Flash朋克,actionscript-3,flash,Actionscript 3,Flash,我试图在AS3中制作我的第一个实际的游戏,因为它简单,所以我使用flashpunk 当我走到门前时,我有一个移动的角色和一个文本框 当我站在门前时,玩家类中的两个变量发生了变化: public var onDoor:Boolean = false; public var doorType:String = "" 你大概可以猜到onDoor做了什么,doorType是类的名称。设置如下: public static var BedroomDoor:Door = new Door(350,
public var onDoor:Boolean = false;
public var doorType:String = ""
你大概可以猜到onDoor做了什么,doorType是类的名称。设置如下:
public static var BedroomDoor:Door = new Door(350, 331, "ApartmentBedroom")
public static function ChangeLevel(world:String)
{
var allLevelsClasses:Array = [ApartmentBedroom, ApartmentLivingRoom]; // put everything here
var newWorld = getDefinitionByName(world) as Class
FP.world = new newWorld
}
公寓门卧室是门通向的世界的名字
在初始化flashpunk的主类中,我有以下函数:
public static function ChangeLevel(world:String)
{
var newWorld = getDefinitionByName(world) as Class
FP.world = new newWorld
}
但是,当我走到门并在调用该函数的门前按X时,我总是会出现以下错误:
[Fault]异常,信息=ReferenceError:Error#1065:未定义可变公寓卧室
有人能帮你解决这个问题吗?为了使用
getDefinitionByName()
你必须先在代码中包含你的类。任何事情都可以,例如简单var a:apartment卧房代码>或更复杂的一个,如var allLevelsClasses:Array=[Apartment卧房,ApartmentLivingRoom]代码>
因此,Main.as代码应该如下所示:
public static var BedroomDoor:Door = new Door(350, 331, "ApartmentBedroom")
public static function ChangeLevel(world:String)
{
var allLevelsClasses:Array = [ApartmentBedroom, ApartmentLivingRoom]; // put everything here
var newWorld = getDefinitionByName(world) as Class
FP.world = new newWorld
}
此外,在创建Door时,还可以避免全名混淆。不要将名称为的字符串传递到Door构造函数中,只需传递world的类:
private var worldClassName:String;
public function Door(x:Number, y:Number, worldClass:Class):void
{
/// init what's necessary
this.worldClassName = getQualifiedClassName(worldClass);
}
后来只是:
public static var BedroomDoor:Door = new Door(350, 331, ApartmentBedroom)
无论何时使用getDefinitionByName(classname)
,类名都应该包含完整的包路径getDefinitionByName(“com.your.domain.apartment卧房”)
像这样吗?getDefinitionByName(“com.Worlds.apartment卧房”)。我还是会犯同样的错误。Worlds是package Apartment卧房所在。AS3语法不允许在package name中使用大写首字母。同样的事情。getDefinitionByName(“com.worlds.apartment卧房”)1.包名正确吗?/2.这没有错误吗<代码>新公寓卧室()代码>