欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 多媒体动画 >> Flash教程 >> Flash基础教程 >> 教程正文

  没有公告

教程: Flash教程-基础教程-Flash MX 新的闪烁世界(第七天) 更多...
教程: Flash教程-基础教程-Flash MX 新的闪烁世界(第七天)



  从Flash 5的时候,我就一直在抱怨为什么enterframe的速度这么固定还这么慢?为什么对于Key对象我还必须去手动建立一个MovieClip来接收事件并触发它?为什么我不能及时准确地接受到我需要的信息呢?亿万个为什么总是关于速度和效率的话题,终于Flash MX带来的一个新概念让我得到满足,那就是Listener——及时监听对象。

  说起这个对象,其实在很多C语言程序中并不是什么新概念,它主要是作为测试环境中的消息接受器或者是改进程序的效率而存在的,但在Flash MX是第一次出现,也是恰到好处地出现。

  Listener对象需要包含调用目标所需要的事件集合,事件集合内可以定义对事件的处理程序,目标函数如果需要Listener对象,必须支持加入Listener的方法。在Flash MX中支持Listener的对象有六种:FStyleFormat、Key、Mouse、Selection、Stage和TextField,通过addListener支持Listener。

  Key:

  在Key对象中的Listener可以获取onKeyDown和onKeyUp时间(当然,也没别的事件可以获取……),一个获取键盘按下和放开的事件监听:


lsn = new Object();

lsn.onKeyDown = function () {trace("down") };

lsn.onKeyUp = function () {trace("up") };

Key.addListener(lsn);


定义Listener的过程很简单,毕竟其本身既是一个对象,并且内部只需要响应事件的集合即可,最后通过支持Listener的方法来得到事件入口并开始触发响应。

  Mouse:

Mouse可以给Listener获取的是onMouseDown、onMouseMove、onMouseUp事件,一个获取鼠标事件的例子:


createEmptyMovieClip("mc", 1);

lsn2 = new Object();

lsn2.onMouseUp = function () {trace("mouse up") };

lsn2.onMouseDown = function () {trace("mouse down") };

lsn2.onMouseMove = function () {trace("mouse moving...") };

mc.onMouseUp = function () {trace("movie mouse up") };

mc.onMouseDown = function () {trace("movie mouse down") };

mc.onMouseMove = function () {trace("movie mouse moving...") };

Mouse.addListener(lsn2);


这个例子也比较明了,但说明了一些事情。在有相同事件和Listener都存在的时候,也许你会问到优先级的问题,而也直接涉及到了Listener的生存周期问题。
Listener的概念存在不是为了抢/覆盖原目标程序的事件,是为了测试和提高程序运行效率而存在的,所以在Flash MX中的Listener也是同样,优先级会低于原目标事件的相同事件,而只有当目标的生存期消失或者目标使用了取消监听的方法才是Listener的生存期的重点。直观的可以表达为一个人正在吃饭碰巧一只蚊子在他吃饭的时候才喝你的血液,这个人吃多少它喝多少(大肚蚊子君),但不会影响到这个人正常的生活(知道拍死它或者这个人不小心正常/异常死亡为止)。

Selection:


Selection可以获取的只有onFocus事件。

createTextField("tf",2,100,200,100,20);

tf.text="my design sucks?";

lsn3 = new Object();

lsn3.onSetFocus = function () {trace("focus") };

Selection.addListener(lsn3);

Selection.setFocus(tf);


Selection的Listener只有在该对象获取焦点或者使用setFocus方法的时候才会触发,而这些的必要条件是用户使用鼠标点击了一个文本区(场景内存在一个文本区对象)。

不过如果增加onSelect该有多好……(其实用onMouseUp和getendindex也可以实现)。

  Stage:

  Stage的更加简单,只是当场景的大小发生变化(场景缩放)的时候获取onResize事件,前提条件是stage.scalemode=”noscale”且不是ShowAll显示。


lsn4 = new Object();

lsn4.onresize = function () {trace("size changing...") };

Stage.scaleMode="noscale";

Stage.addListener(lsn4);
TextField:

可以获取的是onChanged和onScroller事件,我们结合昨天的部分程序写一个例子:


Movieclip.prototype.makeBox = function(x, y, l) {

this.lineto(x, y l);

this.lineto(x l, y l);

this.lineto(x l, y);

this.lineto(x, y);

};

createEmptyMovieClip("scrollUp",3);

with (scrollUp)

duplicateMovieClip(scrollUp, "scrolldown", 4);

scrollUp._y-=60;

scrollUp.onPress=function();

scrollDown.onPress=function();

createTextField("txt",5,300,10,100,40);

txt.border=1;

txt.wordwrap=1;

txt.multiline=1;

txt.type="input";

lsn5 = new Object();

lsn5.onScroller = function () {trace("text scrolling") };

lsn5.onChanged = function () {trace("text changed") };

txt.addListener(lsn5);


当文本超过最大长度的时候或者用户按下了scroll按钮的时候并且没有超过最高/最低scroll范围的时候取得onScroller响应;而用户输入文本的时候响应onChanged事件。
FStyleFormat:

FStyleFormat的Listen

[1] [2] 下一页

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    3DsMAX实例制作:三维玻璃灯泡

    3dmax在线教程--蝴蝶

    3ds max时尚水晶鞋

    精彩Flash制作风吹草动效果动画

    教程: 3DS Max-设计实例-三维虚拟…

    3dmax7.0教程--火焰特效

    绘画技巧:Flash绘制人头造型

    3ds max 室内设计---室内效果图
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网