首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3中的游戏架构

AS3中的游戏架构
EN

Stack Overflow用户
提问于 2013-10-10 21:37:35
回答 2查看 344关注 0票数 0

我现在使用starling框架在flash中做一个游戏。然而,我是游戏中的架构新手,我认为我在游戏中所做的并不是很好。

我有一个Screen类,用于将内容显示到舞台。

代码语言:javascript
复制
public class Screen {
    private var button : Button
    private var controller : Controller

    public function Screen(){
       controller = new Controller(button)
    }
}

public class Button{
    private var controller : Controller
    private var button: Button

    public function Button(){
       button.addEventListener(Event.TRIGGERED, onTrigger)
    }

    private function onTrigger(e:Event){
       controller.notify(buttonTriggered);
    }
}
//in the controller class, I have a list of controller which controls other components 
//those are added to Screen class (character, ...) 
public class Controller{
   public function Controller(button){

   }

   public function notify(event){
      switch(event){
         //notify to other controller with this event
      }
   }
}

你对这个架构有什么建议吗?非常感谢您的所有反馈。

EN

回答 2

Stack Overflow用户

发布于 2014-03-27 16:34:08

我用gazman-sdk.com为屏幕创建了一个很好的解决方案。

当你考虑屏幕机制时,它的主要任务是什么:

  • 管理具有堆栈更改的屏幕:当屏幕到达堆栈顶部时,
    • 调用on resume
    • 当屏幕不再位于堆栈顶部时调用on pause <

    >H112,并在创建屏幕时调用<代码>D13,当屏幕为destroyed.

时调用<代码>D14

  • 也是你想把屏幕逻辑封装在屏幕里面的一些方法。所以你的代码不会有像:opneScreen(new GameScreen());这样的代码行。因为调用此方法的类知道GameScreen是谁,您希望避免这一点。
  • ,最后,当您的屏幕机制启动并运行时,您不想为弹出窗口编写另一个相同的机制,因为它几乎是相同的。

我使用Multiton pattern构建了一个解决方案,它具有屏幕堆栈模型的多种表示形式,既可用于弹出窗口,也可用于屏幕。每个屏幕都被封装,并通过侦听系统事件来启动和关闭。

不幸的是,我还没有为此创建一个完整的教程。当我这样做的时候,它将被发布为here。我是如何在我的组件浏览器项目中运行这个机制的例子的。你可以在github上找到它的源代码。和here的现场例子。

我经常活跃在这个网站上,所以如果你选择在你的项目中实施它,我能够帮助你在途中有任何问题。

干杯,祝你好运。

票数 1
EN

Stack Overflow用户

发布于 2013-10-11 12:00:21

关于您的button类,我假设您想要一个可以用鼠标单击的按钮。如果是这种情况,您应该将Event.TRIGGERED更改为MouseEvent.CLICK,并将onTrigger中的e:Event参数更改为e:MouseEvent。然后,每当您单击该按钮时,该函数都会触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19297333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档