Browsed by
月份:2010年11月

AS3事件机制初识

AS3事件机制初识

昨天在做一个小游戏的时候,发现事件机制很不错,特地写一写,分享一下!

我当时是把游戏时间控制单独写了一个time类,游戏开始时60秒倒计时启动,可是时间为0时,怎么通知Main类呢?
以前也看过事件发送dispatchEvent,不过没怎么理解,不知道怎么用,后来就忘了,现在拾起来再一看,果然很有用,怪不得黑羽连发几篇文章,名为“AS3强大的事件机制”。

dispatchEvent就是可以把time的信息通过事件发送通知给Main类,发送的时候是time类里发送,接受的时候是Main类里的time类实例在侦听接收,所以从头到尾还是一个对象在完成,感觉很合理。

接下来贴效果:

说明:time类的倒计时为0时,会发送事件给Main类,Main类里的time类实例收到信息后,执行下一步操作!

代码如下:

time类:


package {
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
public class Time extends Sprite {
public var timer:Timer,tim:int;
public function Time() {
init();
}
private function init() {
timer = new Timer(1000);
tim = 5;//总时间
timer.start()
tim_txt.text = String(tim);
trace(tim_txt.text)
timer.addEventListener(TimerEvent.TIMER,timeHandler);
private function timeHandler(e:TimerEvent) {
tim_txt.text=String(tim)
if (tim == 0)
{
timer.stop();
//时间为0时,发送给Main主文档这一事件,让Main进行下一步处理
this.dispatchEvent(new TimerEvent(TimerEvent.TIMER_COMPLETE));
} else
{
tim--;
}
}
}
}

Main类:

package {
import flash.display.Sprite;
import flash.events.*;
public class Main extends Sprite {
private var time_mc:Time;
public function Main() {
init();
}
private function init() {
time_mc=new Time();
addChild(time_mc);
time_mc.addEventListener(TimerEvent.TIMER_COMPLETE,timeCom);
}
public function timeCom(e:TimerEvent ) {
timcom_txt.text = "Main类收到time类所发送的信息,时间到,Main类可以进行下一步处理";
}
}
}

源码下载:千脑网盘

上面写的属于事件机制里很简单的部分,随后在小游戏里我还用了自定义事件,但是理解的还不深,下次发文章时再写!

Flash变形相册

Flash变形相册

看到网上很多相册,或者是flash网站的展示页面,有下面这种flash加载下一张图片时的变形效果,感觉很不错,就尝试写了下这个效果。

只是一个很简单 的效果,有兴趣的朋友可扩展下做成相册,呵呵!(有人做的话,做好了记得分享下,我也围观下!)

效果如下:

变形相册截图

注:1.点击图片  或此处 查看效果, 下载载本地效果更佳!

代码如下:


code:
import com.greensock.TweenLite;
import com.greensock.TweenLite;
import flash.events.MouseEvent;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.ProgressEvent;
/*
by Nestor/斯樵
www.sqstudio.com
*/
var sp:Sprite =new Sprite();
var picLoader:Loader=new Loader();
var picArr = ["image/1.jpg","image/2.jpg","image/3.jpg","image/4.jpg"];
stage.addEventListener(MouseEvent.CLICK,onCK);
var id:int = 0;
init();
function onCK(e:MouseEvent):void {
sp.removeChild(picLoader);
picLoader.unload();
init();
stage.removeEventListener(MouseEvent.CLICK,onCK);
load_txt.visible = true;
}
function picPro(e:ProgressEvent):void {
load_txt.text = Math.round(e.bytesLoaded / e.bytesTotal * 100).toString() + "%";
}
function picCom(e:Event) {
load_txt.visible = false;
var wid:Number = Number(e.target.width) + 10;
var hei:Number = Number(e.target.height) + 10;
picLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,picCom);
TweenLite.to(sam_mc,1,{width:wid,height:hei,onComplete:tweenCom});
}
function tweenCom() {
sp.addChild(picLoader);
sp.x = sam_mc.x - sam_mc.width / 2 + 5;
sp.y = sam_mc.y - sam_mc.height / 2 + 5;
addChild(sp);
stage.addEventListener(MouseEvent.CLICK,onCK);
}
function init() {
picLoader.load(new URLRequest(picArr[id]));
picLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,picPro);
picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,picCom);
if (id == picArr.length - 1)
{
id = 0;
} else
{
id++;
}
}

源码下载:千脑网盘 解压密码:www.sqstudio.com

本实例用所用到的TweenLite类 可到官网下载

开通博客啦!

开通博客啦!

接触flash两年了,感悟很多,学的东西也比较乱,所以就想开个博客整理下。

最初关注flash,只是觉得好玩,感觉挺神奇。真正的上手入门,学习AS3也就是年初的事,刚开始是看金鹰的flash教程,现在看来这些教程确实很一般,不过确是给我打开了通向Flash AS3 的大门。之后就开始自学AS3,碰到有不懂的就百度,有时候费了很大劲儿,终于搞明白一个问题,那种激动和满足也是很让人难忘的,相信很多人都不会忘记那种恍然大悟的感觉。没事就逛逛天地会的论坛,看看绚丽的国外Flash全站,读读那些业内大牛的博客,倒也别有一番滋味。尤还记得,看到那些国外Flash全站特效的震撼,读完那些业内Flash大牛博文的仰慕,这些都成为我继续为Flash而努力的动力!

我的水平不高,目前对于AS3 API 掌握不很透彻,对于类的写法,不很熟练,对于设计模式更是一知半解。
不过,所幸我还有些值得庆幸的地方,我知道怎么去寻找解决问题的办法或者方向,我愿意一直用一种兴趣爱好的态度去不断学习Flash。之前在百度空间也写过一段时间博客[Flash蛋蛋堂],不过Flash蛋蛋堂那个博客上面有很多是转载的东西,很多并没有消化,就看到文章好就直接拿过来用了.

如今开通这个博客,我想尽量每一篇都是原创,即便是有别人的东西,那也是博采众家之长,经过融汇贯通的,力求对一个问题做出透彻的理解,并且尽量多做些实例,放出源码,既是对自己知识的梳理,也希望写的东西能给别人些许帮助吧!业内大牛的博客,我也收集了20多个,不过这些博客对我来说,更多的作用是了解业内的新闻动态,因为很多上面的技术要么很难看懂,要么暂时用不到。

鉴于我目前的水平有限,或许我写的东西对有的高手来说很简单,但是至少我每一篇都会再三斟酌,认真撰写,因为这也将做为我自己的技术资料存档,我想随着我技术的进步,这里的博客将会越来越有质量。

这个博客我会一直坚持下去!

喜欢Flash的朋友,我们一起成长!

2010.11.25


如今回头看看以前文章,颇感稚嫩,曾一度想删去,恰好看到季羡林《牛棚杂记》的序,感觉直击内心,好吧,那就不删吧。2017.03.03