Actionscript 3 将字符串解释为函数名-ActionScript 3.0

Actionscript 3 将字符串解释为函数名-ActionScript 3.0,actionscript-3,Actionscript 3,我正在为一个大学作业编写一个游戏,我想创建一个类来处理fla文件库中的所有资源。我已经用OO PHP开发网站将近4年了,所以我有编程经验,但我对AS3还是新手 资产处理程序类: package library { public class AssetHandler { public var stageWidth: int; public var stageHeight: int; public function AssetHandler(

我正在为一个大学作业编写一个游戏,我想创建一个类来处理fla文件库中的所有资源。我已经用OO PHP开发网站将近4年了,所以我有编程经验,但我对AS3还是新手

资产处理程序类:

package library {
    public class AssetHandler {
        public var stageWidth: int;
        public var stageHeight: int;

        public function AssetHandler(sw:int, sh:int):void {
            stageWidth = sw;
            stageHeight = sh;
        }
        //Convert asset to bitmap
        public function bm(AssetsName:String):Object {
            var a:Object = new AssetsName(stageWidth, stageHeight);
            return new Bitmap(a);
        }

    }
}
以及main.fla中引用的主类

package {
    import flash.display.*;
    import library.AssetHandler;

    public class Main extends Sprite {
        private var cannon:Cannon = new Cannon();
        private var holder:Holder = new Holder();
            //I want to replace this
        public var bdata = new Char(stage.stageWidth, stage.stageHeight);
        public var char = new Bitmap(bdata);
            //into this
            public var asset = new AssetHandler(stage.stageWidth, stage.stageHeight);
            public var char = asset.bm("Char");

        private var cannonAngle:Number;

        public function Main() {
                }
        }
}

在php中,您可以轻松地执行$Class->$name(); AS3中是否有类似的方法

我得到了错误: 1180:调用可能未定义的方法AssetName。 1180:调用可能未定义的方法位图

我猜想位图方法由于可见性而找不到,但是我如何修复它呢?
谢谢

我想你需要这样的东西

如果需要通过字符串获取类的引用:

import flash.utils.getDefinitionByName;
.....
var ClassReference:Class = getDefinitionByName("YourClass") as Class;
var functionName:String = "testFunction";
this[functionName]("hello!");

public function testFunction(param:String):void {
    trace(param);
}
如果要按字符串调用函数:

import flash.utils.getDefinitionByName;
.....
var ClassReference:Class = getDefinitionByName("YourClass") as Class;
var functionName:String = "testFunction";
this[functionName]("hello!");

public function testFunction(param:String):void {
    trace(param);
}
希望这对你有帮助

更新

PHP's $Class->$name() may be assumed as classInstance["name"](); in ActionScript

我想你需要这样的东西

如果需要通过字符串获取类的引用:

import flash.utils.getDefinitionByName;
.....
var ClassReference:Class = getDefinitionByName("YourClass") as Class;
var functionName:String = "testFunction";
this[functionName]("hello!");

public function testFunction(param:String):void {
    trace(param);
}
如果要按字符串调用函数:

import flash.utils.getDefinitionByName;
.....
var ClassReference:Class = getDefinitionByName("YourClass") as Class;
var functionName:String = "testFunction";
this[functionName]("hello!");

public function testFunction(param:String):void {
    trace(param);
}
希望这对你有帮助

更新

PHP's $Class->$name() may be assumed as classInstance["name"](); in ActionScript
您需要导入

如果我没记错的话,您不能像现在这样从字符串引用实例化一个类。但是,您可以使用字符串引用进行初始化,并以这种方式实例化一个类

public function bm(AssetsName:String):Object {
    var classdef:Class = getDefinitionByName(AssetsName) as Class;
    var a:Object = new classdef(stageWidth, stageHeight);
    return new Bitmap(a);
}
(我认为这是正确的。可能有一些错误。)(编辑:有-错过了“作为类”部分。)

祝你好运

您需要导入

如果我没记错的话,您不能像现在这样从字符串引用实例化一个类。但是,您可以使用字符串引用进行初始化,并以这种方式实例化一个类

public function bm(AssetsName:String):Object {
    var classdef:Class = getDefinitionByName(AssetsName) as Class;
    var a:Object = new classdef(stageWidth, stageHeight);
    return new Bitmap(a);
}
(我认为这是正确的。可能有一些错误。)(编辑:有-错过了“作为类”部分。)


祝你好运。

在php中,你可以轻松地完成$Class->$name();AS3中是否有类似的方法我认为这是你只能用php做的事情之一。在php中,您可以轻松地执行$Class->$name();AS3中是否有类似的方法我认为这是你只能用php做的事情之一。这和变量($$var)。我在谷歌搜索结果中见过这种方法,但它不适合我,因为我不能使用“this”,除非我为每个资产单独创建一个方法,我试图避免,因为会有很多方法。谢谢你的进口货,节省了我一些时间!我在谷歌搜索结果中看到过这种方法,但它不适合我,因为我不能使用“this”,除非我为我试图避免的每个资产单独创建一个方法,因为它们会很多。谢谢你的进口货,节省了我一些时间!好极了!正是我需要的!谢谢!好极了!正是我需要的!谢谢!