Gaia项目中用到的方法,不属于Gaia本身的放这。
1 gaia里的tweenMax
要注意:滤镜要先激活,再调用
1)阴影,通常用在导航的icon,简单的按钮。
//先导入类:
import com.greensock.TweenMax;
import com.greensock.plugins.DropShadowFilterPlugin;
import com.greensock.plugins.TweenPlugin;
//再激活:
TweenPlugin.activate([DropShadowFilterPlugin]);
//才能使用:
TweenMax.to(mc, .2, {dropShadowFilter:{alpha:0,angle:60, blurX:5, blurY:5, color:0x000000, distance:6, strength:0}} );
2)跳帧,通常整站首页会有一个很酷的进度条,一般手工做100帧动画。如果直接goto跳到某一帧显得很突兀,用frame缓动效果很好。下面代码,用在Preloader.as的onProcess函数中:
//先导入类:
import com.greensock.TweenMax;
import com.greensock.plugins.FramePlugin;
import com.greensock.plugins.TweenPlugin;
//再激活:
TweenPlugin.activate([FramePlugin]);
//才能使用:
TweenMax.to(this["mc"].mc,0.3,{frame:Math.floor(event.perc*100)})
2 bjc组件下拉列表
不喜欢官方组件,因为官方通常很庞大。as2我选用bjc组件。其comboBox组件有一个问题,没法自定义按钮和文本框样式。好在它有按钮和文本框的引用。用for(i in myComboBox)遍历其属性,可以找到__background,__btnDown,和__btnUp。将其设为透明,盖在一张ComboBox图片上,就能如期使用了。
//先导入类
import com.bjc.controls.ComboBox;
var myDP:Array = ["NB", "S", "M", "L", "XL", "XXL"];//设置数据源
myComboBox.dataProvider = myDP;
myComboBox.numRows = myDP.length;//设置长度
myComboBox.highlightColor = Main.COLOR_GORDEN;//设置RollOver时的高亮颜色
myComboBox.selectedColor = Main.COLOR_GORDEN;//设置选择时的高亮颜色
myComboBox.changeHandler = function(){//点击事件
trace(myComboBox.selectedItem);
}
//要用到私有方法,把UI设为不可见
myComboBox["__background"]._alpha = 0;//背景不可见
myComboBox["__btnDown"]._alpha = 0;//按钮(Press时)不可见
myComboBox["__btnUp"]._alpha = 0;//按钮(平常)不可见
3 getURL
因为GaiaAS2最好用ExternalInterface嘛,但是每次写一大串很烦,所以用老套路,类方法吧。还是getURL这个名字亲切。
import flash.external.ExternalInterface;
class wj2.util.uBtn
{
public function uBtn()
{
}
static public function getURL(url:String,window:String)
{
if(ExternalInterface.available){
ExternalInterface.call("window.open",url,window);
}
}
}
4 代码写在哪好
#include
最方便的还是include ,等于是在时间轴上写脚本了。好处就是不用把精力花在结构上,只注重代码本身,方便快捷易修改。在Gaia整站中用的较多,最好用在非活动页面,即纯展示页面,比如滚动条,获奖列表,产品展示等等。写作:
#include “product-1.as”
AS3要去掉前面的#。
AS2文档类
AS3区别于AS2有一个重要区别就是文档类,其实AS2也可以用文档类.。好处是比较规矩,类-属性-方法井井有条。可能换一个人改也看的懂(但目前还没有遇到这么完美的情况)。在Gaia整站中用的不算多,只是在代码变多,结构变复杂时,会自觉的把include 改成文档类:import ProductPage;
this.__proto__ = ProductPage.prototype;
ProductPage['apply'](this, null);
直接写在Gaia的Page上
通常就是活动流程页面这样写了。因为活动会和事件拦截,导航控制这些Gaia特有的东西搀和在一起。把活动代码写在Page中,比较好找。
3种写法各有各的好处,用得对了,能够节省精力和提高效率。
5 表单验证的作法
表单验证,比较人性化的做法,是在每个文本框后加一个iconMC,共2帧,分别2张图片:勾代表无误,叉代码填写有误。
用自定义弹框做有几个缺点:
1从程序员的角度看,自定义弹窗是件很麻烦的事,牵扯到事件调用-设置深度-屏蔽舞台-事件回调-等等。
2从设计师的角度看,提示文字是动态文本,文本必须是宋体,很突兀。如果是嵌入字体,是不是小题大作呢?如果是用跳帧做,提示文字的情况又太多。
3从用户的角度看,你得看懂写的是什么,再来找不对的地方改,不如icon直观。
验证手机
if(!new RegExp("^(13[0-9]|15[0|1|3|6|7|8|9]|18[0|5|6|7|8|9])\\d{8}{1}quot;).test(TFmobile.text)){...}
6 去掉表单控件的黄色矩形框
全局: stage.stageFocusRect = false;
AS3 mc.focusRect=false;
7 测试级别
在工具类:
static public function JSalert(str:String,level:Number) {
if (Main.getMy().alertJS == "no") { return; }
if (level == undefined) {
return;
}
if(ExternalInterface.available){
ExternalInterface.call("alert",str);
}
}