English 中文(简体)
AS3 智能型定义
原标题:AS3 smarter type definitons

我在AS3中工作一个基于组件引擎的 AS3, 我在游戏对象中有一个函数, 返回一个基于其类型 的组件 :

gameObject.Has(Body); //This will return a reference to the gameobjects body component

我进入组件的问题。要做到这一点,我必须做这样的事情:

Body(gameObject.Has(Body)).SetVelocity(5);

有没有人有更好的方法来做这个?

编辑 :

public function Has(type:Class):BaseComponent
{
    for each(var component:BaseComponent in m_components)
        if (component is type)
            return component;

    return null;
}
问题回答

您目前对 Has () 的返回类型有什么信息?

如果您喜欢绕过类型检查。 您可以使用 Has () 方法返回对象类型 。

public function Has():Object{
  ...
  return anObject;
}

#then you can call any prop/method without throwing type errors.
gameObject.Has(Body).SetVelocity(5)

然而,没有一个很好的方法来保持类型检查而不投放 var, 而您已经在示例代码中这样做了 。

您的问题似乎在于您试图在您的执行中过于笼统。 这引入了两个可能的失败点 : 在“ 输入” 方面, 您有可能在“ 输入” 上为您的身体装入一个不属于身体的“ 基本对象 ”, 在“ 退出” 方面, 您的游戏“ 对象” 可以返回一个不是身体的对象( 当前的执行显然属于类型安全这一事实并非特定 ) 。

你知道,当你在呼唤什么本质上是一个`它们'/它们'的通用获取器时,你需要它来返回一个特定对象类型(因为你会用方法),所以为什么不仅仅通过制造所需的清晰获取器和设置器来让自己生活更加轻松呢?

或者你可以得到"强" 完全 荒谬, 并像:

gameObject.has(Body).callMethod( setVelocity ).to(5);

我们在我们的工程中做同样的事情。 但我们有另一个工具。 我们在对象用途中有一个工具类。 方法返回特定根对象下的所有对象 。

        public function collectObjectsByType(object:Object, type:Class, results:Array):void
    {

    }

我只要展示一下方法的支离破碎





相关问题
Attaching a property to an event in Flex/AS3

I have a parameter that needs to be passed along with an event. After unsuccessful attempts to place it on the type by extending the class, I ve been advised in another SO question to write a custom ...

Sorting twodimensional Array in AS3

So, i have a two-dimensional Array of ID s and vote count - voteArray[i][0] = ID, voteArray[i][1] = vote count I want the top 3 voted items to be displayed in different colors, so i have a 2nd Array -...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

What s a good way of deserializing data into mock objects?

I m writing a mock backend service for my flex application. Because I will likely need to add/edit/modify the mock data over time, I d prefer not to generate the data in code like this: var mockData =...

AS3 try/catch out of memory

I m loading a few huge images on my flex/as3 app, but I can t manage to catch the error when the flash player runs out of memory. Here is the what I was thinking might work (I use ???? because i dont ...

热门标签