本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2013-01-17 · 原址 http://space.flash8.net/bbs/thread-310497-1-1.html ← Flash 保存计划
返回列表 回复 发帖

*******AS3.0 相关代码汇总*******

AS3.0出了也有一段时间了,但是工作原因一直没时间静下来去学学,先发个帖子置顶,大伙儿都贡献出些比较好的

代码,最好加点注释,方便大家一起学习.

本人还是粉稀饭AS3.0代码滴写法

则里先随便些了个代码,这四我as3.0滴起步代码,大家么要笑我,哈~

FPSShow.as//动态显示FPS值
  1. package{
  2.         import flash.display.Sprite
  3.                 import flash.utils.Timer;
  4.                 import flash.events.Event;
  5.         import flash.events.TimerEvent;
  6.         import flash.text.TextField;
  7.                 public class FPSShow extends Sprite{
  8.                         private var txt:TextField;
  9.                         private var count:int=0
  10.                         public function FPSShow(){
  11.                                 init()
  12.                                 }
  13.                         private function init(){
  14.                                         txt=new TextField();//创建文本实例
  15.                                         txt.textColor=0xff0000;//设置文本颜色
  16.                                         addChild(txt)//加载这个文本
  17.                                         var myTimer:Timer = new Timer(1000);//Timer类挺好使,类似于setInterval,参数是循环间隔时间,单位是毫秒
  18.                     myTimer.addEventListener("timer", timerHandler);//注册事件
  19.                                         this.addEventListener("enterFrame",countHandler)//注册事件,这里相当于2.0的onEnterFrame
  20.                                         myTimer.start();//Timer实例需要start来进行启动
  21.                                         }
  22.                         private function timerHandler(event:TimerEvent){//Timer实例调用的方法
  23.                                         txt.text="FPS:"+count
  24.                                         count=0//每隔1秒进行清零
  25.                                         }
  26.                         private function countHandler(event:Event){//真循环调用的方法
  27.                                         count++//数值递加
  28.                                                 }

  29.                 }
  30.                         
  31.                 }
复制代码
fla:
var f:FPSShow=new FPSShow()
stage.addChild(f)

/**********************************************/
addEventListener注册事件传递参数的方法
http://space.flash8.net/bbs/thread-340885-1-1.html

AS3读取外部swf的头文件信息:
http://space.flash8.net/bbs/view ... =%CD%B7%CE%C4%BC%FE

AS3中类似watch的功能(附类文件)
http://space.flash8.net/bbs/thread-339662-1-2.html

画饼图 by AS3
http://space.flash8.net/bbs/thread-340429-1-2.html

寻路组件
http://space.flash8.net/bbs/thread-344034-1-1.html

BitmapData抠图小实验
http://space.flash8.net/bbs/thread-353407-1-4.html

MVC 写窗口缩放控制
http://space.flash8.net/bbs/thread-353919-1-1.html

[ 本帖最后由 ycccc8202 于 2008-6-3 09:09 编辑 ]
喜帖街my blog
简单的检测鼠标移动速度:
//as3.0
  1. import flash.geom.Point
  2. var __pointOld:Point=new Point(mouseX,mouseY)//获取鼠标初始位置
  3. this.addEventListener("enterFrame",enterHandler)//注册真循环事件
  4. function enterHandler(e:Event){
  5.         var pointNew:Point=new Point(mouseX,mouseY)
  6.         var step:Number=Point.distance(pointNew,__pointOld)//求每真移动距离
  7.         trace(step*stage.frameRate)//得出每秒鼠标的移动象素
  8.         __pointOld=pointNew//新值换旧值
  9. }
复制代码
喜帖街my blog

贴一个老外写得FPS,看看有什么不一样

  1. package
  2. {
  3.         import flash.events.Event;
  4.         import flash.text.TextField;
  5.         import flash.text.TextFormat;
  6.         import flash.utils.getTimer;
  7.        
  8.         public class FPS extends TextField
  9.         {
  10.                 private var fs: int;
  11.                 private var ms: int;
  12.                
  13.                 public function FPS()
  14.                 {
  15.                         var format: TextFormat = new TextFormat();
  16.                        
  17.                         format.color = 0xffcc00;
  18.                         format.size = 10;
  19.                         format.bold = true;
  20.                         format.font = 'Verdana';
  21.                        
  22.                         textColor = 0xcecece;
  23.                         autoSize = "left";
  24.                         defaultTextFormat = format;
  25.                        
  26.                         ms = getTimer();
  27.                         fs = 0;
  28.                        
  29.                         addEventListener( Event.ADDED, onAdded );       
  30.                         addEventListener( Event.REMOVED, onRemoved );
  31.                 }
  32.                
  33.                 private function onAdded( event: Event ): void
  34.                 {
  35.                         stage.addEventListener( Event.ENTER_FRAME, onEnterFrame );
  36.                 }
  37.                
  38.                 private function onRemoved( event: Event ): void
  39.                 {
  40.                         stage.removeEventListener( Event.ENTER_FRAME, onEnterFrame );
  41.                 }
  42.                
  43.                 private function onEnterFrame( event: Event ): void
  44.                 {
  45.                         if( getTimer() - 1000 > ms )
  46.                         {
  47.                                 ms = getTimer();
  48.                                 text = fs.toString();
  49.                                 fs = 0;
  50.                         }
  51.                         else
  52.                         {
  53.                                 ++fs;
  54.                         }
  55.                 }
  56.         }
  57. }
复制代码
用法
addChild( new FPS() );

[ 本帖最后由 zjwps 于 2006-10-13 11:22 编辑 ]
恩,两个类继承的parent类不同,然后是我的方法用的是Timer类(功能类似以前的setinterval)来处理时间间隔,他的方法是用getTimer()来设置时间间隔的,总的的思路都是一样的.
喜帖街my blog

继续来发吧 PopKeys

  1. package
  2. {
  3.         import flash.display.Stage;
  4.         import flash.events.KeyboardEvent;
  5.        
  6.         public class PopKeys
  7.         {
  8.                 static private var state: Array = new Array();
  9.                
  10.                 static public function initStage( stage: Stage ): void
  11.                 {
  12.                         stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
  13.                         stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUp );
  14.                 }
  15.                
  16.                 static public function isDown( code: uint ): Boolean
  17.                 {
  18.                         return state[ code ] == true;
  19.                 }
  20.                
  21.                 static private function onKeyDown( event: KeyboardEvent ): void
  22.                 {
  23.                         state[ event.keyCode ] = true;
  24.                 }
  25.                
  26.                 static private function onKeyUp( event: KeyboardEvent ): void
  27.                 {
  28.                         state[ event.keyCode ] = false;
  29.                 }
  30.         }
  31. }
复制代码
应该用来判断键盘按下状态,做键盘控制可以用这个

用法 PopKeys.initStage( stage );指定控制的stage
PopKeys.isDown( Keyboard.LEFT );判断具体按钮的按下状态

[ 本帖最后由 zjwps 于 2006-10-13 14:04 编辑 ]
你学FLASH多久了,感觉最大的难点在哪?
接着再来个关于TextField的,鼠标经过文本变色
  1. //---------code by ycccc8202----------
  2. var myText:TextField=new TextField()
  3. myText.text="在人生的高速路上已经连续转错了不少弯"
  4. myText.width=myText.height=300
  5. myText.x=myText.y=100
  6. var myTextFormat_old=new TextFormat()
  7. myTextFormat_old.color="0x000000"
  8. myTextFormat_old.size=12
  9. var myTextFormat_new=new TextFormat()
  10. myTextFormat_new.color="0xff0000"
  11. myTextFormat_new.size=24
  12. function enterFrameListener(event:Event) {
  13. myText.setTextFormat(myTextFormat_old);
  14.       var charIndex:int = myText.getCharIndexAtPoint(myText.mouseX,myText.mouseY);//不断取得指定位置的字符索引
  15.      if(charIndex==-1){//如果鼠标移出文本
  16.                 return;}
  17.           myText.setTextFormat(myTextFormat_new,charIndex,charIndex+1);
  18.     }

  19. addEventListener(Event.ENTER_FRAME, enterFrameListener);//注册桢循环事件
  20. addChild(myText)
复制代码
//代码复制到真上看效果吧~
喜帖街my blog
AS3 正式的出了吗? 下一版FLASH还会有中文的吗?
正式版还没出,中文版我相信肯定会有的~
喜帖街my blog

Control.as

  1. /**
  2. * 键盘控制类
  3. * 把键盘按键动作格式化,一般用于游戏。作者:飞雨影
  4. * 用法:Control.initStage(stage),初始化舞台;Control.addListener(function),添加listener;
  5. * 改变控制设置:Control.changeControl(array);array为设置的keyCode
  6. */

  7. package
  8. {
  9.         import flash.display.Stage;
  10.         import flash.events.KeyboardEvent;
  11.         import flash.events.EventDispatcher;
  12.         import flash.events.Event;
  13.        
  14.         public class Control
  15.         {
  16.                  /**
  17.                  * state为按钮状态,是否按下 isDown来得到状态
  18.                  * controlKeyCode 为按钮控制设置数组,
  19.                  * 默认为 w=上,s=下,a=左,d=下,u,i,j,k为四个动作按钮
  20.                  */  
  21.                 static private var state: Array = new Array(),controlKeyCode:Array=new Array(87,83,65,68,85,73,74,75);
  22.                 static private var controlKey:Array=new Array(),controlName:Array=new Array('上','下','左','右','轻拳','重拳','轻脚','重脚');
  23.                 static private var eventDispatcher:EventDispatcher=new EventDispatcher();
  24.                 static public function initStage( stage:Stage ): void
  25.                 {
  26.                         var len:uint=controlKeyCode.length;
  27.                         for(var i:uint=0;i<len;i++)
  28.                         {
  29.                                 controlKey[controlKeyCode[i]]=controlName[i];
  30.                         }
  31.                         stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
  32.                         stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUp );
  33.                 }
  34.                 static public function isDown( code: uint ): Boolean
  35.                 {
  36.                         return state[ code ] == true;
  37.                 }
  38.                 static public function changeControl(keyCode:Array):void
  39.                 {
  40.                         controlKeyCode = keyCode;
  41.                 }               
  42.         static public function addListener(listener:Function):void
  43.         {
  44.                 var len:uint=controlKeyCode.length;
  45.                 for(var i:uint=0;i<len;i++)
  46.                 {
  47.                         eventDispatcher.addEventListener(controlName[i],listener);
  48.                         eventDispatcher.addEventListener(controlName[i]+'release',listener);
  49.                 }
  50.         }
  51.                 static private function onKeyDown( event: KeyboardEvent ): void
  52.                 {
  53.                         var code:uint=event.keyCode
  54.                         if(!isDown(code))
  55.                         {
  56.                                 state[ code ] = true;
  57.                             //trace( code,"按下");
  58.                            if(controlKey[code])eventDispatcher.dispatchEvent(new Event(controlKey[code]));
  59.                         }
  60.                        
  61.                 }
  62.                 static private function onKeyUp( event: KeyboardEvent ): void
  63.                 {
  64.                         var code:uint=event.keyCode
  65.                                 state[ event.keyCode ] = false;
  66.                                 //trace(event.keyCode,'释放')
  67.                                 if(controlKey[code])eventDispatcher.dispatchEvent(new Event(controlKey[code]+"release"));
  68.                 }

  69.         }
  70. }
复制代码

连接flashcomserver,视频聊天

  1. package {
  2.         import flash.display.Sprite;
  3.         import flash.net.NetConnection;
  4.         import flash.net.NetStream;
  5.         import flash.events.NetStatusEvent;
  6.         import flash.media.Video;
  7.         import flash.media.Camera;
  8.         import flash.events.ActivityEvent;

  9.         public class videoChat extends Sprite
  10.         {
  11.                 [ SWF( backgroundColor='0xdedede', frameRate='500', width='512', height='512' ) ]//设置swf参数
  12.                 private var conn:connFcs,camera:Camera,videoIn:Video,outStream:NetStream,inStream:NetStream;
  13.                 public function videoChat()
  14.                 {
  15.                         var url:String="rtmp:/test_chat";//连接地址
  16.                         var conn:connFcs=new connFcs(url);//建立连接,这个类在最下面的
  17.                         this.conn=conn;
  18.                         conn.addEventListener(NetStatusEvent.NET_STATUS,NetStatusEventHandel);//监视连接状态
  19.                 }
  20.                 private function NetStatusEventHandel(event:NetStatusEvent):void
  21.                 {
  22.                         trace(event.info.code);
  23.                         if(event.info.code=="NetConnection.Connect.Success")//如果连接成功
  24.                         {
  25.                                 init();//初始化
  26.                                 publishStream();//发布视频
  27.                         }
  28.                 }
  29.                 private function publishStream():void
  30.                 {
  31.                         outStream=new NetStream(conn);
  32.                         outStream.publish("test","record");//发布参数,test为视频名,record表示是要保存的,如果不保存用live
  33.                         outStream.attachCamera(camera);
  34.                         inVideo();
  35.                 }
  36.                 private function inVideo():void
  37.                 {//接收视频
  38.                         inStream=new NetStream(conn);
  39.                         inStream.play("test");
  40.                         videoIn.attachNetStream(inStream);
  41.                 }
  42.                 private function init():void
  43.                 {
  44.                         videoIn=new Video();//添加一个视频为了接收
  45.                         addChild(videoIn);
  46.                        
  47.                         camera=Camera.getCamera();//得到摄像头
  48.                         if(camera!=null)//如果有摄像头,添加一个视频到显示
  49.                         {
  50.                                 camera.addEventListener(ActivityEvent.ACTIVITY,activityHandler);
  51.                                 var video:Video= new Video(camera.width * 2, camera.height * 2);
  52.                                 video.x=camera.width;
  53.                                 video.y=camera.height;
  54.                                 video.attachCamera(camera);
  55.                             addChild(video);
  56.                         }else{trace("you need camera!");}
  57.                        
  58.                 }
  59.                 private function activityHandler(event:ActivityEvent):void
  60.                 {
  61.                         trace('activityHandler'+event);
  62.                 }
  63.                
  64.         }
  65.        
  66. }
  67.         import flash.net.NetConnection;
  68.         import flash.net.ObjectEncoding;
  69.        

  70. class connFcs extends NetConnection
  71. {
  72.         private var url:String
  73.         public function connFcs(url:String)
  74.         {
  75.                 objectEncoding=ObjectEncoding.AMF0;//连接fcs需要设置这个
  76.                 this.url=url;
  77.                 connect(url);//开始连接
  78.         }
  79. }
复制代码
[ 本帖最后由 zjwps 于 2006-10-18 09:27 编辑 ]
希望贴些有适当解释的代码,大家也方便查阅
喜帖街my blog
小样的  ycccc8202 你有XP系统很爽 是不是??   我给你加分!!!  你要保证1天2个教程………………挖卡卡
以爱你的方式活着,
录在别人的眼中,却无法被你看到。
此时此刻,你无论如何也无法理解我孤独的含义!

                                               ——冷的像风
欢迎你来我这里做客
强人!
我的博客:[url]http://blog.sina.com.cn/u/1146960042[/url]
希望BZ加上注释   好让我们这些菜鸟能看懂!~
那麽我也來貼個不錯的blog支持ycccc8202

http://www.tink.ws/blog/category/actionscript-30/

http://www.flashsandy.org/sources/1_0/tests/CubicPanoTest/ 這個3D engine寫的不錯,可以用方向鍵看看效用
http://www.flashsandy.org/sources/1_1/tests/CubicPanoTest.zip

[ 本帖最后由 Super-Tomato 于 2006-11-25 13:47 编辑 ]
var str = "5375-7065-722d-546f-6d61-746f", val = "";
str = str.split("-").join("");
for(var i=0; i<str.length; i+=2)
val += chr(parseInt(str.substr(i,2), 16));
trace(val)
恩,谢谢 Super-Tomato的支持~
喜帖街my blog
请问有没有关于xml与as的更详细应用教程.......市面上有很多都很一般...

谢~~
Blog: riaoo.com
抓Q精品小游戏:http://zhuaQ.com/
能不能发一个载入图片相当于loadMovie()的类?
............学ing
不懂
生活是丰富多彩的,努力奔跑吧

学习中

希望有解释.
都在胡搞
不懂啊,:'(
http://cxbuy.net
学习学习
哈哈,as3出来这么久了,我还没有好好看看呢
好贴啊,谢谢楼主.
那个键盘的很启发啊
不错啊1~~~~谢谢

高薪聘请高手!!

高薪聘请高手!!
本工作室是一家香港公司於深圳新成立的游戏工作室,主要以作flash游戏为主,待遇從優。
要求精通flash, action script,有相当的工作经验,有一定作品。
工作地点:深圳
待遇:面议 只要你有能力,一定会令你满意
联系方式QQ:474903353 / MSN: moonship2004@hotmail.com
有收获...
返回列表