ycccc8202 2006-10-12 04:00
*******AS3.0 相关代码汇总*******
AS3.0出了也有一段时间了,但是工作原因一直没时间静下来去学学,先发个帖子置顶,大伙儿都贡献出些比较好的
代码,最好加点注释,方便大家一起学习.
本人还是粉稀饭AS3.0代码滴写法
则里先随便些了个代码,这四我as3.0滴起步代码,大家么要笑我,哈~
FPSShow.as//动态显示FPS值[code]package{
import flash.display.Sprite
import flash.utils.Timer;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.text.TextField;
public class FPSShow extends Sprite{
private var txt:TextField;
private var count:int=0
public function FPSShow(){
init()
}
private function init(){
txt=new TextField();//创建文本实例
txt.textColor=0xff0000;//设置文本颜色
addChild(txt)//加载这个文本
var myTimer:Timer = new Timer(1000);//Timer类挺好使,类似于setInterval,参数是循环间隔时间,单位是毫秒
myTimer.addEventListener("timer", timerHandler);//注册事件
this.addEventListener("enterFrame",countHandler)//注册事件,这里相当于2.0的onEnterFrame
myTimer.start();//Timer实例需要start来进行启动
}
private function timerHandler(event:TimerEvent){//Timer实例调用的方法
txt.text="FPS:"+count
count=0//每隔1秒进行清零
}
private function countHandler(event:Event){//真循环调用的方法
count++//数值递加
}
}
}[/code]fla:
var f:FPSShow=new FPSShow()
stage.addChild(f)
/**********************************************/
[b]addEventListener注册事件传递参数的方法[/b]
[url=http://space.flash8.net/bbs/thread-340885-1-1.html]http://space.flash8.net/bbs/thread-340885-1-1.html[/url]
[b]AS3读取外部swf的头文件信息:[/b]
[url=http://space.flash8.net/bbs/view%20...%20=%CD%B7%CE%C4%BC%FE]http://space.flash8.net/bbs/view ... =%CD%B7%CE%C4%BC%FE[/url]
[b]AS3中类似watch的功能(附类文件)[/b]
[url=http://space.flash8.net/bbs/thread-339662-1-2.html]http://space.flash8.net/bbs/thread-339662-1-2.html[/url]
[align=right][float=right][url=http://space.flash8.net/bbs/misc.php?action=viewratings&tid=340429&pid=2046362][img]http://space.flash8.net/bbs/images/default/agree.gif[/img][/url] [/float][/align]画饼图 by AS3
[url=http://space.flash8.net/bbs/thread-340429-1-2.html]http://space.flash8.net/bbs/thread-340429-1-2.html[/url]
寻路组件
[url=http://space.flash8.net/bbs/thread-344034-1-1.html]http://space.flash8.net/bbs/thread-344034-1-1.html[/url]
BitmapData抠图小实验
[url=http://space.flash8.net/bbs/thread-353407-1-4.html]http://space.flash8.net/bbs/thread-353407-1-4.html[/url]
MVC 写窗口缩放控制
[url=http://space.flash8.net/bbs/thread-353919-1-1.html]http://space.flash8.net/bbs/thread-353919-1-1.html[/url]
[[i] 本帖最后由 ycccc8202 于 2008-6-3 09:09 编辑 [/i]]
ycccc8202 2006-10-12 08:49
简单的检测鼠标移动速度:
//as3.0
[code]
import flash.geom.Point
var __pointOld:Point=new Point(mouseX,mouseY)//获取鼠标初始位置
this.addEventListener("enterFrame",enterHandler)//注册真循环事件
function enterHandler(e:Event){
var pointNew:Point=new Point(mouseX,mouseY)
var step:Number=Point.distance(pointNew,__pointOld)//求每真移动距离
trace(step*stage.frameRate)//得出每秒鼠标的移动象素
__pointOld=pointNew//新值换旧值
}[/code]
zjwps 2006-10-13 11:20
贴一个老外写得FPS,看看有什么不一样
[code]package
{
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.getTimer;
public class FPS extends TextField
{
private var fs: int;
private var ms: int;
public function FPS()
{
var format: TextFormat = new TextFormat();
format.color = 0xffcc00;
format.size = 10;
format.bold = true;
format.font = 'Verdana';
textColor = 0xcecece;
autoSize = "left";
defaultTextFormat = format;
ms = getTimer();
fs = 0;
addEventListener( Event.ADDED, onAdded );
addEventListener( Event.REMOVED, onRemoved );
}
private function onAdded( event: Event ): void
{
stage.addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
private function onRemoved( event: Event ): void
{
stage.removeEventListener( Event.ENTER_FRAME, onEnterFrame );
}
private function onEnterFrame( event: Event ): void
{
if( getTimer() - 1000 > ms )
{
ms = getTimer();
text = fs.toString();
fs = 0;
}
else
{
++fs;
}
}
}
}[/code]
用法
addChild( new FPS() );
[[i] 本帖最后由 zjwps 于 2006-10-13 11:22 编辑 [/i]]
ycccc8202 2006-10-13 12:21
恩,两个类继承的parent类不同,然后是我的方法用的是Timer类(功能类似以前的setinterval)来处理时间间隔,他的方法是用getTimer()来设置时间间隔的,总的的思路都是一样的.
zjwps 2006-10-13 13:59
继续来发吧 PopKeys
[code]
package
{
import flash.display.Stage;
import flash.events.KeyboardEvent;
public class PopKeys
{
static private var state: Array = new Array();
static public function initStage( stage: Stage ): void
{
stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUp );
}
static public function isDown( code: uint ): Boolean
{
return state[ code ] == true;
}
static private function onKeyDown( event: KeyboardEvent ): void
{
state[ event.keyCode ] = true;
}
static private function onKeyUp( event: KeyboardEvent ): void
{
state[ event.keyCode ] = false;
}
}
}
[/code]
应该用来判断键盘按下状态,做键盘控制可以用这个
用法 PopKeys.initStage( stage );指定控制的stage
PopKeys.isDown( Keyboard.LEFT );判断具体按钮的按下状态
[[i] 本帖最后由 zjwps 于 2006-10-13 14:04 编辑 [/i]]
birdliu 2006-10-13 14:01
你学FLASH多久了,感觉最大的难点在哪?
ycccc8202 2006-10-16 09:23
接着再来个关于TextField的,鼠标经过文本变色
[code]
//---------code by ycccc8202----------
var myText:TextField=new TextField()
myText.text="在人生的高速路上已经连续转错了不少弯"
myText.width=myText.height=300
myText.x=myText.y=100
var myTextFormat_old=new TextFormat()
myTextFormat_old.color="0x000000"
myTextFormat_old.size=12
var myTextFormat_new=new TextFormat()
myTextFormat_new.color="0xff0000"
myTextFormat_new.size=24
function enterFrameListener(event:Event) {
myText.setTextFormat(myTextFormat_old);
var charIndex:int = myText.getCharIndexAtPoint(myText.mouseX,myText.mouseY);//不断取得指定位置的字符索引
if(charIndex==-1){//如果鼠标移出文本
return;}
myText.setTextFormat(myTextFormat_new,charIndex,charIndex+1);
}
addEventListener(Event.ENTER_FRAME, enterFrameListener);//注册桢循环事件
addChild(myText)
[/code]
//代码复制到真上看效果吧~
liandyii 2006-10-16 15:21
AS3 正式的出了吗? 下一版FLASH还会有中文的吗?
ycccc8202 2006-10-16 18:22
正式版还没出,中文版我相信肯定会有的~
zjwps 2006-10-17 11:22
Control.as
[code]/**
* 键盘控制类
* 把键盘按键动作格式化,一般用于游戏。作者:飞雨影
* 用法:Control.initStage(stage),初始化舞台;Control.addListener(function),添加listener;
* 改变控制设置:Control.changeControl(array);array为设置的keyCode
*/
package
{
import flash.display.Stage;
import flash.events.KeyboardEvent;
import flash.events.EventDispatcher;
import flash.events.Event;
public class Control
{
/**
* state为按钮状态,是否按下 isDown来得到状态
* controlKeyCode 为按钮控制设置数组,
* 默认为 w=上,s=下,a=左,d=下,u,i,j,k为四个动作按钮
*/
static private var state: Array = new Array(),controlKeyCode:Array=new Array(87,83,65,68,85,73,74,75);
static private var controlKey:Array=new Array(),controlName:Array=new Array('上','下','左','右','轻拳','重拳','轻脚','重脚');
static private var eventDispatcher:EventDispatcher=new EventDispatcher();
static public function initStage( stage:Stage ): void
{
var len:uint=controlKeyCode.length;
for(var i:uint=0;i<len;i++)
{
controlKey[controlKeyCode[i]]=controlName[i];
}
stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUp );
}
static public function isDown( code: uint ): Boolean
{
return state[ code ] == true;
}
static public function changeControl(keyCode:Array):void
{
controlKeyCode = keyCode;
}
static public function addListener(listener:Function):void
{
var len:uint=controlKeyCode.length;
for(var i:uint=0;i<len;i++)
{
eventDispatcher.addEventListener(controlName[i],listener);
eventDispatcher.addEventListener(controlName[i]+'release',listener);
}
}
static private function onKeyDown( event: KeyboardEvent ): void
{
var code:uint=event.keyCode
if(!isDown(code))
{
state[ code ] = true;
//trace( code,"按下");
if(controlKey[code])eventDispatcher.dispatchEvent(new Event(controlKey[code]));
}
}
static private function onKeyUp( event: KeyboardEvent ): void
{
var code:uint=event.keyCode
state[ event.keyCode ] = false;
//trace(event.keyCode,'释放')
if(controlKey[code])eventDispatcher.dispatchEvent(new Event(controlKey[code]+"release"));
}
}
}[/code]
zjwps 2006-10-17 18:11
连接flashcomserver,视频聊天
[code]
package {
import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.media.Camera;
import flash.events.ActivityEvent;
public class videoChat extends Sprite
{
[ SWF( backgroundColor='0xdedede', frameRate='500', width='512', height='512' ) ]//设置swf参数
private var conn:connFcs,camera:Camera,videoIn:Video,outStream:NetStream,inStream:NetStream;
public function videoChat()
{
var url:String="rtmp:/test_chat";//连接地址
var conn:connFcs=new connFcs(url);//建立连接,这个类在最下面的
this.conn=conn;
conn.addEventListener(NetStatusEvent.NET_STATUS,NetStatusEventHandel);//监视连接状态
}
private function NetStatusEventHandel(event:NetStatusEvent):void
{
trace(event.info.code);
if(event.info.code=="NetConnection.Connect.Success")//如果连接成功
{
init();//初始化
publishStream();//发布视频
}
}
private function publishStream():void
{
outStream=new NetStream(conn);
outStream.publish("test","record");//发布参数,test为视频名,record表示是要保存的,如果不保存用live
outStream.attachCamera(camera);
inVideo();
}
private function inVideo():void
{//接收视频
inStream=new NetStream(conn);
inStream.play("test");
videoIn.attachNetStream(inStream);
}
private function init():void
{
videoIn=new Video();//添加一个视频为了接收
addChild(videoIn);
camera=Camera.getCamera();//得到摄像头
if(camera!=null)//如果有摄像头,添加一个视频到显示
{
camera.addEventListener(ActivityEvent.ACTIVITY,activityHandler);
var video:Video= new Video(camera.width * 2, camera.height * 2);
video.x=camera.width;
video.y=camera.height;
video.attachCamera(camera);
addChild(video);
}else{trace("you need camera!");}
}
private function activityHandler(event:ActivityEvent):void
{
trace('activityHandler'+event);
}
}
}
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
class connFcs extends NetConnection
{
private var url:String
public function connFcs(url:String)
{
objectEncoding=ObjectEncoding.AMF0;//连接fcs需要设置这个
this.url=url;
connect(url);//开始连接
}
}[/code]
[[i] 本帖最后由 zjwps 于 2006-10-18 09:27 编辑 [/i]]
ycccc8202 2006-10-18 02:42
希望贴些有适当解释的代码,大家也方便查阅
tommyheng 2006-10-20 11:16
小样的 ycccc8202 你有XP系统很爽 是不是?? 我给你加分!!! 你要保证1天2个教程………………挖卡卡
裸奔狂人 2006-11-21 10:11
强人!
江南箭客 2006-11-24 13:09
希望BZ加上注释 好让我们这些菜鸟能看懂!~
Super-Tomato 2006-11-25 13:41
那麽我也來貼個不錯的blog支持ycccc8202
[url=http://www.tink.ws/blog/category/actionscript-30/]http://www.tink.ws/blog/category/actionscript-30/[/url]
[url=http://www.flashsandy.org/sources/1_0/tests/CubicPanoTest/]http://www.flashsandy.org/sources/1_0/tests/CubicPanoTest/[/url] 這個3D engine寫的不錯,可以用方向鍵看看效用
[url=http://www.flashsandy.org/sources/1_1/tests/CubicPanoTest.zip]http://www.flashsandy.org/sources/1_1/tests/CubicPanoTest.zip[/url]
[[i] 本帖最后由 Super-Tomato 于 2006-11-25 13:47 编辑 [/i]]
ycccc8202 2006-11-29 10:24
恩,谢谢 Super-Tomato的支持~
iaipvfhp 2006-12-19 22:02
请问有没有关于xml与as的更详细应用教程.......市面上有很多都很一般...
谢~~
kids 2007-1-30 21:27
能不能发一个载入图片相当于loadMovie()的类?
木落小侠 2007-2-3 01:41
............学ing
不懂
wangpengdb 2007-3-14 17:18
学习中
希望有解释.
zhegebucuo 2007-4-2 16:28
都在胡搞
115673 2007-4-12 12:53
不懂啊,:'(
闪诗璇 2007-4-18 09:38
哈哈,as3出来这么久了,我还没有好好看看呢
风逸 2007-4-21 15:40
好贴啊,谢谢楼主.
cyywill 2007-4-29 16:10
那个键盘的很启发啊
haveme51 2007-5-3 00:33
我地妈勒!好多
a3810225 2007-5-15 12:39
不错啊1~~~~谢谢
moonship 2007-5-16 12:13
高薪聘请高手!!
高薪聘请高手!!
本工作室是一家香港公司於深圳新成立的游戏工作室,主要以作flash游戏为主,待遇從優。
要求精通flash, action script,有相当的工作经验,有一定作品。
工作地点:深圳
待遇:面议 只要你有能力,一定会令你满意
联系方式QQ:474903353 / MSN: [email]moonship2004@hotmail.com[/email]
pminma 2007-5-21 09:38
有收获...
yeo529 2007-5-27 19:01
都是高人啊,总想学as,但是总给自己找借口没有时间,哎
要努力了
daly3721 2007-5-27 22:29
请高手为这段音频实时显示内置代码做个能拖动的播放条
请高手为这段音频实时显示内置代码做个能向前拖动,从而能快速向前后播放的播放条好吗?
[url=http://space.flash8.net/bbs/attachment.php?aid=324835]源码[/url]
AS发烧友 2007-6-1 17:43
2.0刚学一半 就出了3.0 哎·· 真不知道应该先学那个好 3.0在2.0上 改变了好多!!
pruelove 2007-7-31 10:30
请高手个进度条的类好吗。我以前都是2.0,转到3.0还不太清楚,麻烦高手写个进度条的,好让我这个菜鸟知道如何转换的好吗?
hsyxh 2007-8-5 22:35
慢慢看,要不会难死人的。
blueky 2007-8-21 22:04
变化好大!
相当凑合 2007-8-29 14:27
我学了一年多的FLASH,会做的也就是让图片动起来,加个渐变什么的。但同学们都觉得我很强。
自从暑假开始学AS后,才越发觉得自己还一窍不通。只能算个爱好者。两个月过去了,我觉得自己可以算菜鸟了,但看了以上蝌蚪文后,我觉得我还是初学者。。。。。
学校图书馆没有AS方面太专业的书籍,不知道谁能介绍些可以买到的?有电子版的更好了。。
zjwps 2007-9-7 11:24
好的电子书大多是英文的.
yinvented 2007-9-23 20:31
有没有教做留言系统的啊?
angleverge 2007-10-5 02:15
*** 作者被禁止或删除 内容自动屏蔽 ***
ganylau 2007-10-5 19:29
自己用AS3写的
ganylau 2007-10-5 19:37
还没发上去呢!学AS3 3个月写的东西,很简单的!~
控制舞台上两个MC碰上之后反方向移动效果:
自定义类:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
//导入要用的类;
[SWF(width="1200", height="600", backgroundColor="#FFFFFF", frameRate="39")];
public class hitTestObjectClass extends Sprite {
public function hitTestObjectClass(mc:MovieClip,mc1:MovieClip):void {
//构造函数;
mc.addEventListener(MouseEvent.MOUSE_DOWN,rolloverhandler);
mc.addEventListener(MouseEvent.MOUSE_UP,rollouthandler);
mc1.addEventListener(MouseEvent.MOUSE_DOWN,rollover);
mc1.addEventListener(MouseEvent.MOUSE_UP,rollout);
//将两个MC对象注册到侦听器;
// trace(mc.hitTestObject(mc1));
// trace(mc1);
function rollover(mouseDown:MouseEvent):void {
//自定义函数;
mc1.startDrag();
addEventListener(Event.ENTER_FRAME,xuanzhuan1);
//用此(mc1)注册到侦听器;
}
function rollout(mouseUp:MouseEvent):void {
//自定义函数;
mc1.stopDrag();
removeEventListener(Event.ENTER_FRAME,xuanzhuan1);
}
function rolloverhandler(mouseDown:MouseEvent):void {
//自定义函数;
mc.startDrag();
addEventListener(Event.ENTER_FRAME,xuanzhuan);
//将mc注册到侦听器;
}
function rollouthandler(mouseUp:MouseEvent):void {
//自定义函数;
mc.stopDrag();
removeEventListener(Event.ENTER_FRAME,xuanzhuan);
//删除侦听器;
}
function xuanzhuan(enterFrame:Event):void {
//进入每帧运行的动作;
if (mc.hitTestObject(mc1)) {
mc1.x = mc1.x-(mc.x - mc1.x)/5;
mc1.y = mc1.y-(mc.y - mc1.y)/5;
}
}
function xuanzhuan1(enterFrame:Event):void {
//进入每帧运行的动作;
if (mc1.hitTestObject(mc)) {
mc.x = mc.x - (mc1.x - mc.x)/5;
mc.y = mc.y - (mc1.y - mc.y)/5;
}
}
}
}
}
FLA文件第一帧:
var mymcmc:hitTestObjectClass = new hitTestObjectClass(mc,mc1);
mc与mc1是舞台上两MC的实例名哦!~
这个主要是控制自制的MC元件,以类来控制;
希望大家多多指点!
我都是自学的,自学要领(每个类认真的看,再实践);
ganylau 2007-10-5 20:12
楼主第一篇程序总是停在FPS:12;
只改了最后一点就OK了;
private function timerHandler(event:TimerEvent) {//Timer实例调用的方法
txt.text="FPS:" + count;
//count = 0;//每隔1秒进行清零;
count++;
//这里把count = 0 改成count++这样就OK了;
}
private function countHandler(event:Event) {//真循环调用的方法
//count++;//数值递加
//请问楼主,这段自定义函数在这里起什么作用?
}
给改了下 不要丢偶石头哦!:lol
chenmkun 2007-10-8 18:24
加点解释嘛,也好让我们这些新手也看的懂:handshake
Squallzero 2007-10-9 11:18
THX...
多少晒.!
weihuan 2007-10-14 22:53
cs3无法将动作应用与按钮?
cs3无法将动作应用与按钮?
magicianlu 2007-10-20 22:11
学不过来~~~~~:L
magicianlu 2007-10-20 22:12
学不过来~~~~~:L
闪之舞 2007-10-26 10:51
不错,非常好,受益非浅啊!
mooka 2007-10-27 19:51
部分连接已失效。期待更新
xr99 2007-11-3 14:25
我是新来的..大家多多指导
chlccc 2007-12-5 14:22
视频的太强了!!!感谢感谢!
loveskc 2007-12-13 04:04
多谢LZ分享哦 :lol
bobytan 2007-12-27 10:54
受益良多!!
za007z 2008-1-8 21:19
好资源!不知LZ能否给个FLASH CS3的下载链接?
hbyswy 2008-1-11 00:36
hao a
qiangbaor 2008-2-16 11:58
精华就是精华呀~~~~~~~
ghgmxeman 2008-2-20 10:29
请把这篇帖子的回复清空,变成纯技术贴,
欣琪 2008-3-3 21:59
我是新手,学习做动画,但看不懂,楼主可以教教吗?