dav*_*vid 4 model-view-controller design-patterns actionscript-3
我经常看到模型视图控制器模式的非常不同的实现,并且完全理解你应该适应和使用最适合你需求的东西,但我想知道在以太中保持简单游戏逻辑的优点/缺点/最佳实践控制器或型号?
从本质上说,这是我应该这样做的正确方法吗?
对于这个简单的例子,玩家受到了伤害,我列出了三种可能的处理方式:
1.
位指示:
_model.playerDamage - 15;
if (_model.playerDamage <= 0){
_model.playerLives --;
_model.restartLevel();
}
Run Code Online (Sandbox Code Playgroud)
2.
控制器:
_model.playerDamage = 15;
Run Code Online (Sandbox Code Playgroud)
模型:
function set playerDamage(value:int){
playerDamage = value;
updatePlayer();
}
function updatePlayer():void{
if (playerDamage<=0){
palyerLives --;
restartLevel();
}
}
Run Code Online (Sandbox Code Playgroud)
3.
控制器:
_model.playerDamage = 15;
_model.addEventListener('playerChange', checkPlayerStatus);
function checkPlayerStatus(e:Event):void{
if (_model.playerDamage<=0){
_model.playerLives --;
_model.restartLevel();
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
function set playerDamage(value:int){
playerDamage = value;
dispatchEvent(new Event('playerChange'));
}
Run Code Online (Sandbox Code Playgroud)
模型中的当然因为您可能有多个控制器(将来)以类似或相同的方式影响模型中的事物.控制器只是将UI事件转换为业务事件的一种机制.模型是处理逻辑的地方.
您可能会发现以下stackoverflow线程有用:
虽然它们是特定于Java的,但这里讨论的想法是独立于平台的.
希望有所帮助.