2月 232016
 

大部分时候,我们会放弃系统的默认镶边,自定义自己想要的镶边。这个时候,就需要自己手动来写效果了。基本过程是这样的。
1,屏蔽系统的镶边。
2,自己写皮肤,写逻辑(拖拽窗体,resize窗体,最大化,最小化,关闭,恢复等)。
每个AIR都有一个默认的xml配置文件,这里边定义了一些参数。通过打开注释,改变下边两个参数来关闭系统的镶边。一个是关闭镶边,另一个是打开透明。

        <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
        <systemChrome>none</systemChrome>

        <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
        <transparent>true</transparent>

通过以上的设置,关闭了系统的镶边显示。然后来看怎么写自定义的镶边。最大化,最小化这些,比较好处理。这里主要讲下自由拖拽和自由resize。air提供了一个很好的方法(nativeWindow.startResize),来启动窗体的自由resize。里边可以带参数。参数标明拖拽的八个方向。仅仅这个是不够的,还要定义鼠标效果。鼠标移上去,拖拽光标要显示出来,拖拽的时候,光标跟着走。这里细节还是比较多。先记下光标的实现。
1,自己定义光标的显示对象。(位图,自己绘制都行)。
2,通过Mouse.registerCursor注册光标。registerCursor方法有两个参数,第一个参数是光标的名字,后边调用的时候需要,第二个参数是一个BitmapData的数组。就是光标的显示。
3,通过调用Mouse.cursor方法来更换光标。
其实,到了这里。在做这些之前,系统就已经有了一些光标效果。如鼠标遇到输入的时候的输入光标,遇到按钮的时候手型光标。当然通过上边的步骤,可以实现光标的定义。

下边说下拖拽。八个方向(上,上左,上右,左,右,下,下左,下右),通过定义sprite和范围来启动。可以通过定义一个sprite,然后通过Rectange来区分,调用resize,也可以通过建立八个sprite,分配好坐标来resize。我自己用的是后边一种方法。感觉还行。
建立八个sprite,然后对八个sprite进行侦听MouseDown,RollOver,RollOut事件。MouseDown事件,用来启动拖拽的,RollOver来显示光标的,RollOut来恢复到默认光标的。
RollOver的时候,根据不同的Sprite,取不同的光标效果。然后按下的时候,关掉mouseChildren属性。要不拖拽的时候,会出现泄露等瑕疵。同时,侦听stage的mouseUp事件,这个用来恢复默认光标。仅仅RllOut是不够的。还有,在RollOut的时候,如果鼠标状态是mouseDown状态,应不恢复默认光标。

上边这些可以定义到一个父类里边,以后用的时候,直接继承过来。至于按钮这些,可以定义在子类中。还有如果窗体是不规则的,可以自由对待。好了,细节有一些。贴出完整的代码吧。还需要更完善一些。
Continue reading »

2月 162016
 

TweenMax除了有基础的运动,loader等功能外,还有一些特殊的功能。比如滤镜的缓动,中心旋转,投影的缓动,变色的缓动等。

这些用到了其插件。这些插件在plugins包下。特意提出来,使用方法也有点不一样。使用插件效果分两步。

1,使用TweenPlugin的静态activate方法激活相应的插件。

TweenPlugin.activate([GlowFilterPlugin , TransformAroundCenterPlugin]);

2,用TweenLite启用插件,设置插件参数。

createScale();
curRotation = int(720 * Math.random());
TweenLite.to(image , 1.5 , {glowFilter:{color:int(0xffffff * Math.random()), blurX:10, blurY:10, strength:1, alpha:1} ,
                transformAroundCenter:{scale:curScale, rotation:curRotation}});

注意:用这个需要去下载greensock。免费插件会相对少一些功能。可以网上找全的。

Continue reading »

网站地图