Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 模型视图控制器-在何处保存简单逻辑_Actionscript 3_Model View Controller_Design Patterns - Fatal编程技术网

Actionscript 3 模型视图控制器-在何处保存简单逻辑

Actionscript 3 模型视图控制器-在何处保存简单逻辑,actionscript-3,model-view-controller,design-patterns,Actionscript 3,Model View Controller,Design Patterns,我经常看到模型-视图-控制器模式的不同实现,并且完全理解您应该调整和使用最适合您需要的,但是我想知道在控制器或模型中保留简单游戏逻辑的优点/缺点/最佳实践是什么 从本质上说,我应该用哪种方式来做这件事 在这个简单的例子中,玩家受到伤害,我列出了三种可能的处理方法: 1. 控制者: 型号: 当然是在模型中,因为您可能有多个控制器(将来)以类似或相同的方式影响模型中的事物。控制器只是一种将UI事件转换为业务事件的机制。模型是处理逻辑的地方 您可能会发现以下stackoverflow线程非常有用:

我经常看到模型-视图-控制器模式的不同实现,并且完全理解您应该调整和使用最适合您需要的,但是我想知道在控制器或模型中保留简单游戏逻辑的优点/缺点/最佳实践是什么

从本质上说,我应该用哪种方式来做这件事

在这个简单的例子中,玩家受到伤害,我列出了三种可能的处理方法:

1.

控制者:

型号:


当然是在模型中,因为您可能有多个控制器(将来)以类似或相同的方式影响模型中的事物。控制器只是一种将UI事件转换为业务事件的机制。模型是处理逻辑的地方

您可能会发现以下stackoverflow线程非常有用:

  • 虽然它们是特定于java的,但这里讨论的思想是独立于平台的


    希望这会有所帮助。

    好的,谢谢-因此,您是否可以保留模型中的所有逻辑?只需使用控制器来设置模型中的内容?我会使用模型作为数据结构api-您可以在输入所有需要的内容后检索所需内容-其他人不应该知道这些值是如何计算的:)而控制器只是用来传递数据
    _model.playerDamage - 15;
    if (_model.playerDamage <= 0){
        _model.playerLives --;
        _model.restartLevel();
    }
    
    _model.playerDamage = 15;
    
    function set playerDamage(value:int){
         playerDamage = value;
         updatePlayer();
    }
    
    function updatePlayer():void{
        if (playerDamage<=0){
             palyerLives --;
             restartLevel();
        }
    }
    
    _model.playerDamage = 15;
    _model.addEventListener('playerChange', checkPlayerStatus);
    
    function checkPlayerStatus(e:Event):void{
        if (_model.playerDamage<=0){
             _model.playerLives --;
             _model.restartLevel();
        }
    }
    
    function set playerDamage(value:int){
         playerDamage = value;
         dispatchEvent(new Event('playerChange'));
    }