月度存档: 3 月 2011

stopImmediatePropagation和stopPropagation的区别

 

     今天项目中遇到一个问题,就是在点击场景上的物体a时,a响 应了鼠标事件,然后舞台也响应了鼠标事件,而项目要达到的效果是只让a响应鼠标事件,舞台不要响应鼠标事件.

为了达到这个效果,可以这样处理:在a的响应事件函数末添加事件的stopImmediatePropagation方法.

如果只想让舞台响应鼠标事件,而a不响应的话,可以将stage.mouseChildren = false;

a.addEventListener(MouseEvent.CLICK,doIt);

function doIt(e):void{

trace(“stage”);

}

//stage.addEventListener(MouseEvent.CLICK,doIt);

stage.mouseChildren =false;

stopImmediatePropagation和stopPropagation的区别

stopImmediatePropagation()方法被调用后,将马上阻止后面所有的事 件,即使这个事件是同一个节点 所具有的。而stopPropagation()方法被调用后,对当 前节点并不影响,只是阻止了后面节点 root和stage的事件。

 因此在事件流中,如果每个节点只注册一个事件,使用 stopImmediatePropagation()方法和stopPropagation()方法是一样的,都是阻止当前节点以后的事件传递,但是, 当一个节点注册多个相同事件时,这些事件会有优先级,stopImmediatePropagation()方法将阻止优先级低的事件发生,而 stopPropagation()方法对这些具有优先级的事件并没有影响。

更详细信息参考:http://shengjijj.blog.163.com/blog/static/1331973762009102621851890/

AS3.0 正则表达式判断中文

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]

[code]

function isChinese(temp)
{
var re = /[^\u4e00-\u9fa5]/;
if(re.test(temp)) return false;
return true;
}
trace(isChinese(“中文”));
[/code]

根据数字生成对应艺术字

知识点:

1.getDefinitionByName(“str”) as Class 可以将变量当类名,这个在展示图像资源的时候很有用!

2,//检查是否输入为数字

function checkNum (_num:String):Boolean

{

var numReg:RegExp = new RegExp(/^[0-9]+$/);

if (!numReg.test(_num))

{

input_txt.text = “对不起,输入的不是数字”;

return false;

}

else

{

return true;

}

}

3.在考虑限制输入的时候,发现flash的文本框属性有一个选项可以限制输入字符个数,TextField类型的对象可以设置输入类型 比如 tt.restrict = “0-9”; 就是只能输入0-9之间的数字,哈哈,这个比用正则表达式方便多了,但是不能像正则表达式一样提供出错提示,呵呵,所以各有优势吧,demo中左边输入文本是正则表达式的限制,右边的输入文本是TextField的限制。

Demo:

]]>

flash的游戏引擎

2D engines


Flixel  
功能全面的2D点阵游戏开发引擎。 github

 
也许你曾经就玩过用这个引擎开发的游戏 Canabalt

 
 
FlashPunk  
另一个2D点阵游戏开发引擎。

 


PushButton  
一个结合Box2D物理引擎而且支持多人游戏的2D引擎,如果你能上facebook可以试试 YouTopia

 

 

ISO引擎


AS3 ISO LIB  
As3isolib是一个简单、高速且高校的引擎,使得开发人员可以去专注实际的应用而不必去学习复杂的API。

 

TheoWorlds
“TheoSDK 原先是我们自己的一个计算距离的引擎,他可以让你创建自己基于地图方式的游戏。”

Isometric Game Engines

OpenSpace

 

物理引擎


Flave – 2D物理引擎
JigLib – 3D物理引擎
Box2D – 2D物理引擎
APE (ActionScript Physics Engine) – 2D物理引擎
WOW Engine – 3D物理引擎
Particle Engine – 例子引擎

3D引擎


Alternativa3D , Away3D , Papervision3D , Five3D , Sandy 3D


TankiOnline

一些有用的类库


AS3 Data Structures For Game Developers (AS3DS) – 很多游戏开发的结构。

BaseUI
为flash准备的类似flex中的布局结构

vancura-AS3-libs
纯代码实现组件的皮肤、样式并提供Scale9Bitmap的支持。

BrowserCanvas
动态调整flash的大小

Flash的九宫格

scale9Grid缩放指定的组件样式,以方便用户在界面的操作,同时你也可以将其应用在图形和设计元素上。

  在之前的版本中,在缩放圆角形时,你可能需要做许多现在看起来多余的代码。

Flash 8 scale9Grid的应用

  使用九宫格,就可以定义scale9Grid.使这保持圆角的比例,而只缩放中心的区域

//var grid:Rectangle = new Rectangle(15, 15,60 , 50);
//nine.scale9Grid = grid;

stage.addEventListener(MouseEvent.MOUSE_MOVE,doMove);
function doMove(e:MouseEvent) {
nine.width = mouseX;
nine.height = mouseY;
}
参考资料:

http://www.alixixi.com/web/a/2008070853995.shtml

http://yexitonglcy.blog.163.com/blog/static/6061515420107161231599/

]]>

关于项目管理

在项目管理中,存在一个钻石五角,包含了一个项目所需考虑的五大要素,分别包括:
成本,质量,进度,功能,持续发展力,一个好的管理者,应该要综合这五个要素,全面规划项目,带领项目组弟兄做好计划,需求,设计和编码,测试和发布几个阶段的工作。
一、在成本方面,分为人工成本,差旅成本,采购成本,其中最主要的还是人工成本的控制,一个好的项目规划,必定要在项目确定之前,分析规划好人工成本,而这跟用户的需求是息息相关的,有了对用户需求的正确全面的判断,以及有效的用户需求管理,才能有效控制好成本支出,不因为不必要的需求变更导致成本的成倍增加,因此,要想做好该阶段的工作,除了用经验和能力做好成本预算之外,最关键的还是做好需求分析。
二、在质量方面,我觉得关键还是对需求的把握,用户的需求决定了项目所要的质量范围。是否要进行设计评审,是否要进行代码review,是否要进行单元测试,是否要进行性能测试,这些都由用户所要的效果和项目的价值,利润范围所决定。(如果已定项目价钱的话)如果项目价值高,客户有发展前景,那么质量的要求上理所当然要高点,倘若只是一些日常且价值低的项目,又或者只是一些很小且无潜在发展前景的客户,质量要求可以适当降低,以预算和项目组工作人员工作强度为重。
而在质量的保证上,要尽量和客户多沟通交流,尽早让客户体验产品,通过客户的反馈和项目组内部的评审,来保证项目的质量。
三、在项目的进度方面,首先我们得在计划阶段就确定好几个关键的时间节点,包括初验时间,换个直白的说法这是公司收钱的时间,至关重要,要放在主要位置,还有就是首个版本发布时间,需求调研时间,终验时间这三个。这些都是检验和保证项目的进度的途径和关键点,同时我们还得做好用户需求变更的准备,做好突发情况的应对方案,以有力保证项目进展顺利,按时按质完成。
四、至于功能,首先要在需求上下功夫,确保项目设计和开发之前确定下的需求的正确性。在开发过程中不生搬硬套生命周期模型,可以适当的根据具体情况做相应的改动,以保证开发的顺利,要尽早的让客户试用,让客户参与对产品的评测,减少bug,实现客户的需求。
五、最后是持续发展力的问题,其实在这方面,我了解得不算深,我浅浅的谈下我的认识,一个项目的好坏,除了要对外满足客户的需求外,对内,还要看看能不能利用这个项目做点什么,而持续发展力的问题就体现在这里了。我们可否借这个项目发展内部的人员?增加内部技术的积累?尝试着在一些项目中做点新的变化,为以后的项目发展项目进化做点准备?是否可以借此项目稳定一些客户关系,一直做这些客户心目中的专家,方便日后的需求变更控制?这四种尝试都只是持续发展力的几个方面,一个项目若能在完成客户要求之余同时做到这四个方面,无疑是完美的,为此我们应该在做项目的过程中,一并把这些因素考虑进去,才能真正的做好一个项目。