论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

Flash as3 常用技巧汇总

文章类别:Flash AS | 发表日期:2009-8-2 15:03:31

 

Flash as3 常用技巧汇总

 

以上是我对Flash as3常见问题的一些整理。技术的汇总,希望对大家学习Flash as3有所帮助

 

B布局
如何避免矢量图模糊

复制内容到剪贴板

代码:

规则图形使用整数的坐标和宽度,并不要使用中心坐标。

F反射
根据类名得到相应的实例 , 模拟Flash as2attachMovie

复制内容到剪贴板

代码:

protected function attachMc(className : String):Sprite
{
     var mc: Class = getDefinitionByName(className) as Class;
     return new mc() as Sprite;;
}

H后臺
防止后臺數據被緩存

复制内容到剪贴板

代码:

在訪問的頁面后加上隨機參數
urlloader.load ( new URLRequest ( "http://localhost/service.php?random"+Math.random() ) );

防止讀取中文頁面出現亂碼

复制内容到剪贴板

代码:

使用URLStream 并使用readMultiByte 讀取數據

J剪辑控制

任何位置的跨场景影片控制:

复制内容到剪贴板

代码:

MovieClip ( root ).gotoAndPlay ( 帧书 , "场景" );
点评:在主影片从MovieClip集成的情况下,rootMainTimeline类型,其实也是一个MovieClip

K扩展

安装AIR for Flash CS3 扩展

复制内容到剪贴板

代码:

官方声明air extension b2只能支持英文版本

S鼠标交互

ReleaseOutSide
的实现方式

复制内容到剪贴板

代码:

方法1
对目标mc做如下处理
mc.addEventListener ( MouseEvent.MOUSE_DOWN ,
添加stage的监听 );
并对stage.addEventListener ( MouseEvent.MOUSE_UP , 移除stage监听 );
mc.addEventListener ( MouseEvent.MOUSE_UP   ,
移除stage的监听 );
方法2
创建临时层用于遮挡鼠标事件,并侦听这个临时层的MouseEvent.MOUSE_UP事件用于适时的移除临时层。
同时侦听stageEvent.RESIZE事件用于重绘临时层的大小。

S时间处理

秒转为时分秒格式

复制内容到剪贴板

代码:

function secToTime ( secs:int ):String {
    var h:int = Math.floor ( secs / 3600);
    var m:int = Math.floor ( ( secs - h * 3600 ) / 60 );
    var s:int = secs - h * 3600 - m * 60;
    return h + " : " + m + " : " + s;
}

S数学
获得指定范围随机数

复制内容到剪贴板

代码:

function random ( range:Number ):Number {
    return Math.random() * range;
}

S沙箱策略

跨域加载图片

复制内容到剪贴板

代码:

var pic_loader_context = new LoaderContext(true);
pic_loader.load(pic_urlr,pic_loader_context);

多运行时共享库需要注意的问题

复制内容到剪贴板

代码:

多个swf库被载入。那么取出元素所需要的applicationDomain也就是各个swf所在的loaderInfo.applicationDomain
这样的情况,在调用applicationDomain.getDefinition获取类标识之前,先确定好applicationDomain是否是所
需的那一个每个swfapplicationDomain默认都是不同的。所以可以存储这些swf以备使用。

W文本

在文本缩小的时候字不会消失的办法

复制内容到剪贴板

代码:

使用BitmapData,以new BitmapData ( width , height , true , 0x00FFFFFF )方式构造,
然后draw方法绘制出文字,可保持文本背景透明的同时,达到完美缩放效果。
我建议打开Bitmapsmoothing属性。

獲得文本的光標位置 核心方法

复制内容到剪贴板

代码:

public function getPosition ( txt:TextField ):Point {
    var currentIndex:int = txt.caretIndex;
    var rect:Rectangle = txt.getCharBoundaries(currentIndex);
    if ( rect==null ) return null;
    else return new Point (rect.x,rect.y);
            
}

如何擴展TextArea

复制内容到剪贴板

代码:

TextAreaprotected屬性textField
可在繼承之后使用,并在內部擴展行為。

其他
Flex
結合FlashCS3項目中需要注意的問題

复制内容到剪贴板

代码:

一些組件只能在FLASH中編譯,而定義在Flex中找不到。解決辦法
Flex不要使用只有FLASH能識別的類定義。
可以考慮向上轉型 并使用對象["屬性"]的方式賦值
可以避免類定義在Flex中存在時的編譯錯誤。

复制内容到剪贴板

代码:

降低程序耦合度
單元,或者稱之為模塊之間,使用事件關聯,
組合關系不宜嵌套過深。可以避免編譯進來許多用不到的類使編譯時間成倍增長,
并會彈出不是錯誤的編譯時錯誤。這句話大概得在項目中理解了。

使用拖曳,并带有多元素联动的注意问题

复制内容到剪贴板

代码:

不要在这样的情况下使用startDrag再根据拖动元素坐标计算的方法。而使用stage一级的MouseEvent.MOUSE_MOVE
否则无法保证联动元素之间因赋值顺序发生的错位。

Flash as2 过度Flash as 3 专题
关于Fla中的Flash as3代码书写注意事项

复制内容到剪贴板

代码:

使用舞台实例,需确保在当前帧可访问,这个加入一个if判断就能够做到。

复制内容到剪贴板

代码:

时间轴上的 play (); stop (); gotoAndPlay () 等,没有任何改变,和以前一样的用
访问主场景使用 MovieClip ( root )

复制内容到剪贴板

代码:

结合文档类使用,出现对于stage一级引用,推荐使用推迟初始化时间,采用
在构造函数中侦听Event.ADDED_TO_STAGE
并开始执行初始化内容

复制内容到剪贴板

代码:

当文档类中需要使用舞台变量,同样加上if判断来保险

复制内容到剪贴板

代码:

Linkage的元件链接中的Class,可以忽略其实际类存在的警告,当作一个标识名使用。

复制内容到剪贴板

代码:

fla的类都是Runtime binding

复制内容到剪贴板

代码:

判断影片或者效果播放在哪可以在帧上分派事件出来

复制内容到剪贴板

代码:

纯透明度变化的动画效果。可以少使用时间轴制作,而使用类似TweenLite一类的缓冲工具制作。可减少出现null exception的几率

复制内容到剪贴板

代码:

需要使用到文档类的时候。可以多把效果的代码写在fla中而把业务逻辑写在文档类中。

复制内容到剪贴板

代码:

gotoAndPlay 一类属于异步操作,不要认为执行了gotoAndPlay之后那一帧上的实例就马上可以访问到并使用。

复制内容到剪贴板

代码:

Linkage类中的基本类型,如需扩展,推荐从Sprite中扩展

复制内容到剪贴板

代码:

不要在从Sprite型得到继承的位置使用帧上代码,例如Sprite型文档类,或者Sprite型的Linkage的帧上如果加入代码就会
提示addFrameScript错误,因为这个是属于Sprite子类MovieClip的隐藏方法。

复制内容到剪贴板

代码:

Flash as2以及Flash as3 swf通讯可以使用LocalConnection非常好用,记得在LocalConnection别忘记用try catch
基于SharedObject的通讯也是可以考虑使用的。

复制内容到剪贴板

代码:

Event.RESIZE时间并不是任何显示对象都可用,推荐只对stage使用此事件侦听并做统一的大小重设调度

复制内容到剪贴板

代码:

对于元件大小因为不可见元素的计算导致并非实际所见大小可以考虑使用linkage继承并覆盖其get width     get height 属性选择器

复制内容到剪贴板

代码:

元件的on ( rollover ) {} 或者 instance.onRollOver = function () {}
可以使用
instance.addEventListener ( MouseEvent.ROLL_OVER , rolloverHandler );
function rollHandler ( event:Event ):void {}
来替代

DEMO源代码

應用程序常用圖標匯總

复制内容到剪贴板

代码:

http://www.famfamfam.com/archive/silk-icon-set-released/

鍵盤控制[臨時的enterframe判斷]源代碼

复制内容到剪贴板

代码:

Keyboard.fla (57.5 KB)

Keyboard.fla (57.5 KB)
下载次数: 165

2008-8-1 18:28

窗體改變尺寸的穩定實現

复制内容到剪贴板

代码:

Pane.swf (6.26 KB)

Pane.swf (6.26 KB)
下载次数: 348

2008-8-14 18:54

复制内容到剪贴板

代码:

可拉伸的面板.rar (29.11 KB)

可拉伸的面板.rar (29.11 KB)
下载次数: 175

2008-8-14 18:54

Cinema 4D中的菜单

复制内容到剪贴板

代码:

TUQ}K9Z_[0KH@7%FU3~X8FE.jpg (14.23 KB)

2008-8-20 09:36


ApplicationModules.swf (277.58 KB)

ApplicationModules.swf (277.58 KB)
下载次数: 367

2008-8-20 09:36


ApplicationModules.rar (300.13 KB)

ApplicationModules.rar (300.13 KB)
下载次数: 206

2008-8-20 09:36

mp3播放器界面
配合Adobe界面所使用的设计

复制内容到剪贴板

代码:

}6T876_2YSX2L44VYP7EKI2.jpg (37.24 KB)

2008-8-20 09:55


Player.fla (162.5 KB)

 

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058