Adobe Flash Player 11(Molehill)发布!

Adobe昨日发布了Flash player 11预览版,网上看到了一些资料,汇总下! 安装使用

一些demohttp://alternativaplatform.com/en/showcase/ Molehill 的官方介绍:http://labs.adobe.com/technologies/flashplatformruntimes/incubator/features/molehill.html molehill的一篇 天地会 达人翻译的文章:http://bbs.9ria.com/thread-71980-1-3.html 源地址:http://www.bytearray.org/?p=2555 最新发布的资源: Flash Player 11,0,0,58 Incubator Release Notes,点此                  Adobe AIR 与 Adobe Flash Player Incubator安装页面,点此 Adobe Flex SDK ( FB helo),点此 playerglobal.swc ,点此 文档 ,点此   支持Molehill的3D开发框架:

ElectroSever4.0.6 官方下载

       买了本《大型网页游戏开发》,但是到官网下载ElectroSever时,却发现现在是ES5,下载下来后,发现es5和es4 差距挺大,很多类包都不一样,就在网上翻,却怎么也找不到es4,貌似相关的资料也特别少,硬着头皮到官网论坛提了个问题,没想到很快就得到了回复。 下载地址:http://www.electrotank.com/downloads/4.0.6/ElectroServer_4_0_6_Windows.exe 学习中遇到问题大家一起交流下哈!

让对象完全置顶

在做三国时,拖拽物品总是被挡到,很不方便,就花了点时间想了想怎么解决? 改来改去最后压缩到4行代码,还算比较简洁,不多说直接贴代码: public function setIndex(sp:DisplayObject):void{ var tmpSP:DisplayObject = sp; while(tmpSP != null && tmpSP.parent != null){ tmpSP.parent.setChildIndex(tmpSP,tmpSP.parent.numChildren-1); tmpSP = tmpSP.parent as DisplayObject; } } 其实,关键的也就两句,执行完这个函数以后拖拽的对象会完全的置顶!

三国·游戏说明

游戏地址:http://sqstudio.com/work/war/index.html 最新在做的一款RPG小游戏,NPC和界面已经做好,下一步准备增加地图和网络通信。以下是游戏的介绍: 游戏分为三个画面: 一. 开始画面:点击按钮进入游戏 二. 选择角色画面: 共有三个角色,刘备,关羽,张飞。每项属性各有偏重,可自由选择一个角色进入游戏。 三 .游戏进行画面: 1> 玩家:可以通过普通攻击(空格键)或技能攻击来伤害敌人。 玩家可以使用道具增加自身的属性。 玩家死亡后,可以选择重新开始或退出游戏。 1> 敌人 : 1. 共有8种敌人(参军,盗贼,莽夫,木兵,轻步兵,轻骑兵,重步兵,重骑兵) 2. AI逻辑分为两种,一是奔跑不停 全场冲刺,碰到玩家即攻击,另一种是 原地不动,玩家走进攻击范围才主动攻击, 并追击玩家。 3. 每刷新10敌人,敌人死掉后,可以增加玩家的经验值和金币,并有概率的掉落道具,敌人全部被杀完后,刷新下一批。 2> 道具:(鼠标双击) 1.道具类型分为两种,药品和装备,药品可以增加玩家的HP和MP,装备可以增加玩家的攻击力和防御值。 药品有五种:小生命药水(HP),小魔法药水(MP),大生命药水(HP),大魔法药水(MP)和回锅肉(HPMP,只能购买获得)。 装备分八种:裂魂剑,粗布衣,铜戒指,粗布腰带,古神戒,精品布衣,青丝腰带,嗜血剑。后四种只能通过购买获得。 2.道具的状态分为三种: 捡起:道具可以从场景中捡起放入背包。 使用:表明道具可以使用,药品可以消耗(玩家HP/MP不足的话),装备可以穿上(玩家没有佩戴相同的装备的话), 道具也可以拖出背包扔掉。只有该状态的道具可以拖动。 已经使用: 表明道具(即装备)已经穿上,双击后可以脱下放入背包。 3> 技能:共有三项技能(火星四射,火光冲天和龙风剑柱),每个角色有一项天赋技能。 玩家可以双击 掌握技能 中的 图标,使用该技能。 玩家可以学习技能树中的其他技能,每学一项消耗1点技能点,每升2级可以增加1点技能点。 4> 面板: 1.背包:放置所拥有的道具,可以点击按钮整理背包,共25格,装满后不能捡起东西。背包内的道具状态为 使用。 2.玩家信息:显示当前玩家的信息和所佩戴的装备,装备状态为已经使用。 3.技能:分为 掌握技能和全部技能两部分,掌握技能的图标可以拖动。 4.快捷栏: 显示技能或药品的快捷方式,从左到右对应 (1-!)到(8-*) 八个键,可以将药品或技能拖拽到快捷栏, 按下数字键(非数字键盘)后,可以使用对应的药品或技能。背包中的药品用完时,对应的药品图标消失,也可以通过拖拽扔掉图标。该面板可以隐藏。 5.信息:显示游戏信息,信息分为三种类型,战斗,物品和系统。面板可以隐藏。 6.商店:出售所有种类的道具。分为 药品和装备两部分。 购买道具需要满足三个要求:等级需要,金币数量和背包空间。 5> tooltip: 鼠标滑入道具或技能图标时,会出现tooltip提示框,显示当前道具或技能的详细信息。快捷栏图标没有此功能。

键盘事件

在我们做游戏时,常常会用到用键盘事件来控制人物移动的情况,如果直接用(KeyboardEvent.KEY_DOWN)和(KeyboardEvent.KEY_UP)的话,往往会出现这样或那样的问题,不知道大家都是怎么解决的?  用键盘事件来控制人物移动,最常见的问题是:  1.如果用户按住一个键不释放,如何处理?比如长按向右键的话,会一直运行右键触发的函数!  2.如果用户同时按住多个方向键,如何处理?比如同时按住向右和向上,在前进过程中跳跃;用户还可能中间松开其中一个键等!  这些问题不解决好的话,有可能会造成电脑CPU飙升,严重拖慢系统运行速度,swf 的画面会变得非常卡。  我的思路是 当键盘按下的时候触发一个变量,可能首先大家会想到用布尔值(Boolean),按下为true,释放为false,没错,最初我也用的是布尔值,当用户长按某个键不松时,只是让系统在刷一个布尔值,这样会大大降低程序的运行成本。但是后来我发现用Int的0和1来表示按下和释放两种状态效果更佳,因为0和1这两个数值的本身还可以做为人物移动的坐标系数,这样右进一步简化代码!  最近在学Flash Builder,所以这次的案例是在Flash Builder下写的,用的时Flex3.5的框架,写的时候尽量运行一些架构的思想,就是尽量把视图层、数据层和控制层分开,特意又画了下UML图给大家贴出来!  [caption id=”attachment_138” align=”aligncenter” width=”600” caption=”键盘事件的UML图”]键盘事件的UML图[/caption] 图比较简单,这次主要说的是键盘事件,这些东西顺带说一下,MoveMain是主类,NPCView是视图类,KeyLogic是进行逻辑判断的控制类,GameModel是数据类, NPCVO声明了一些变量。  下面开始贴案例效果: 

 

说明:先用鼠标在下面的swf上点下,获取焦点,然后用上下左右方向键控制npc的移动! 

接下来是代码: 

//  代码看不懂的地方可以跳过,只要看懂其中的大意,明白思路就好了! 

MoveMain(主类): 

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400" applicationComplete="application1_applicationCompleteHandler(event)" xmlns:vo="com.nestor.vo.*" xmlns:view="com.nestor.view.*" > <mx:Script> <![CDATA[ import com.nestor.ctrl.KeyLogic; import com.nestor.model.GameModel; import com.nestor.vo.NPCVO; import mx.events.FlexEvent; private var keyLogic:KeyLogic=new KeyLogic(); private var playerVo:NPCVO=GameModel.getGameModel().playerVO; protected function application1_applicationCompleteHandler(event:FlexEvent):void { stage.addEventListener(KeyboardEvent.KEY_DOWN,keyLogic.downHandler); stage.addEventListener(KeyboardEvent.KEY_UP,keyLogic.upHandler); var timer:Timer=new Timer(30); timer.addEventListener(TimerEvent.TIMER,tHandler) timer.start(); } private function tHandler(e:TimerEvent):void{ var spdX:int=5; var spdY:int=5; Npc.x += (playerVo.isLeft * (-spdX) + playerVo.isRight * spdX); Npc.y += (playerVo.isUp * (-spdY) + playerVo.isDown * spdY); } ]]> </mx:Script> <view:NPCView id="Npc" x="100" y="100"/> </mx:Application>  

NPCView类:(视图类) <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100"> <mx:Button  label="NPC" width="100" height="100" fontSize="32" fontFamily="Georgia"/> </mx:Canvas>  KeyLogic类(逻辑控制类)  package com.nestor.ctrl { /* * @ Nestor/斯樵 */ import com.nestor.model.GameModel; import com.nestor.vo.NPCVO; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class KeyLogic { private var playerVo:NPCVO=GameModel.getGameModel().playerVO; public function KeyLogic() { } public function downHandler(e:KeyboardEvent):void{ switch (e.keyCode){ case Keyboard.UP: playerVo.isUp=1; break; case Keyboard.DOWN: playerVo.isDown=1; break; case Keyboard.LEFT: playerVo.isLeft=1; break; case Keyboard.RIGHT: playerVo.isRight=1; break; } } public function upHandler(e:KeyboardEvent):void{ switch (e.keyCode){ case Keyboard.UP: playerVo.isUp=0; break; case Keyboard.DOWN: playerVo.isDown=0; break; case Keyboard.LEFT: playerVo.isLeft=0; break; case Keyboard.RIGHT: playerVo.isRight=0; break; } } } }  GameModel类(数据类)  package com.nestor.model { import com.nestor.vo.NPCVO; public class GameModel { public var playerVO:NPCVO; public var CrtLabel:String; private static var instance:GameModel=null; public function GameModel() { playerVO=new NPCVO(); } public static function getGameModel():GameModel{ return instance = new GameModel(); } } }   NPCVO类(声明Model中数据)  package com.nestor.vo { public class NPCVO { public var isLeft:int=0; public var isRight:int=0; public var isUp:int=0; public var isDown:int=0; public function NPCVO() { } } } 源码下载: [download id=”2”]