`
spring_lmsd
  • 浏览: 997 次
  • 性别: Icon_minigender_2
  • 来自: 福建
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于as3的一些总结

阅读更多
1.载入外部xml方法
注意点:如果将flash放在html中,as中xml的路径都是相对html的路径
2.鼠标跟随事件
注意点:用stage.addEventListener(MouseEvent.MOUSE_MOVE, FollowMe2);// FollowMe2跟随事件方法名,FollowMe2方法中必须加上event.updateAfterEvent();
这样鼠标可以更流畅
3.动态文本遮罩
注意点:如果动态文本无法正常显示设置过滤器
var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);
intro.filters=[txt_blur];
设置动态遮罩:contentMc.mask=maskMC;
4.跳帧时无法读取帧里的元件
注意点:flash的跳帧延时问题,可以用Event.ENTER_FRAME事件监听是否读取到元件,读取到后移除监听(不知道是否有更好办法)
5.关于监听带参
通常设置一个事件都是
元件.addEventListener(事件名,事件处理方法);
在这里无法将这个事件的一些设置参数传进处理方法中
在这里分享一个工具类EventDpMediator.as

package CYPL.utils {
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.utils.Dictionary;
public class EventDpMediator {
  private static var eventObj : Object;
 
  private var  _dispatcher : IEventDispatcher;
  /**
   * @dispatcher 目标对象
   */
  public function EventDpMediator(dispatcher : IEventDispatcher) {
   _dispatcher = dispatcher;
   eventObj = {};
  }
  /**
   * 注册事件
   * @eventType 事件类型
   * @handler 响应方法
   * @arg 参数对象
   */
  public function addEventListener(eventType : String,handler : Function,arg : Object = null) : void {
   //trace("addEventListener:::", eventType)
   removeEventListener(eventType, handler);
   if(eventObj[eventType] == undefined) {
    eventObj[eventType] = new Dictionary;
    eventObj[eventType]["count"] = 0;
   }
   eventObj[eventType]["count"]++;
   _dispatcher.addEventListener(eventType, eventObj[eventType][handler] = handlerX.call(null, handler, arg));
  }
  /**
   * 删除事件
   * @eventType 事件类型
   * @handler 响应方法
   */
  public function removeEventListener(eventType : String,handler : Function) : void {
   if(!eventObj[eventType])return;
   var __handler : Function = eventObj[eventType][handler];
   if(__handler == null)return;
   //trace("removeEventListener", eventType);
   _dispatcher.removeEventListener(eventType, __handler);
   delete eventObj[eventType][handler];
   if(eventObj[eventType]["count"]-- == 0) {
    delete eventObj[eventType]["count"];
    delete eventObj[eventType];
   }
  }
  private function handlerX(handler : Function,arg : Object) : Function {
   var This : EventDpMediator = this;
   return function(e : Event): void {
    handler.call(null, This, e, arg);
   };
  }
}
}
使用例子:
/**
* @author:CYPL
* @用途:EventDispatcher的中介类,方便进行传递参数
* @date:2009.7.14
* @example:
<============================================================
import CYPL.utils.EventDpMediator;
var ms=new EventDpMediator(stage);
ms.addEventListener(MouseEvent.MOUSE_DOWN,handler,{o:3});
ms.addEventListener(MouseEvent.MOUSE_UP,handler,4);
ms.addEventListener(MouseEvent.CLICK,handler);
//参数m:中介对象,e:事件对象,arg参数对象
function handler(m:EventDpMediator,e:Event,arg:*=null) {
switch (e.type) {
case MouseEvent.MOUSE_DOWN :
trace("MouseEvent.MOUSE_DOWN:",arg.o);
break;
case MouseEvent.MOUSE_UP :
trace("MouseEvent.MOUSE_UP",arg);
break;
case MouseEvent.CLICK :
trace("MouseEvent.CLICK:",arg);
break;
}
//handler内部可以通过第一个参数中介对象来remove
m.removeEventListener(MouseEvent.MOUSE_DOWN,handler);
}
//外部可以直接用中介对象来remove
ms.removeEventListener(MouseEvent.MOUSE_UP,handler);
===========================================================>
*/
分享到:
评论
2 楼 zhuxiangyan 2010-10-20  
spring_lmsd 写道
1.载入外部xml方法
注意点:如果将flash放在html中,as中xml的路径都是相对html的路径
2.鼠标跟随事件
注意点:用stage.addEventListener(MouseEvent.MOUSE_MOVE, FollowMe2);// FollowMe2跟随事件方法名,FollowMe2方法中必须加上event.updateAfterEvent();
这样鼠标可以更流畅
3.动态文本遮罩
注意点:如果动态文本无法正常显示设置过滤器
var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);
intro.filters=[txt_blur];
设置动态遮罩:contentMc.mask=maskMC;
4.跳帧时无法读取帧里的元件
注意点:flash的跳帧延时问题,可以用Event.ENTER_FRAME事件监听是否读取到元件,读取到后移除监听(不知道是否有更好办法)
5.关于监听带参
通常设置一个事件都是
元件.addEventListener(事件名,事件处理方法);
在这里无法将这个事件的一些设置参数传进处理方法中
在这里分享一个工具类EventDpMediator.as

package CYPL.utils {
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.utils.Dictionary;
public class EventDpMediator {
  private static var eventObj : Object;
 
  private var  _dispatcher : IEventDispatcher;
  /**
   * @dispatcher 目标对象
   */
  public function EventDpMediator(dispatcher : IEventDispatcher) {
   _dispatcher = dispatcher;
   eventObj = {};
  }
  /**
   * 注册事件
   * @eventType 事件类型
   * @handler 响应方法
   * @arg 参数对象
   */
  public function addEventListener(eventType : String,handler : Function,arg : Object = null) : void {
   //trace("addEventListener:::", eventType)
   removeEventListener(eventType, handler);
   if(eventObj[eventType] == undefined) {
    eventObj[eventType] = new Dictionary;
    eventObj[eventType]["count"] = 0;
   }
   eventObj[eventType]["count"]++;
   _dispatcher.addEventListener(eventType, eventObj[eventType][handler] = handlerX.call(null, handler, arg));
  }
  /**
   * 删除事件
   * @eventType 事件类型
   * @handler 响应方法
   */
  public function removeEventListener(eventType : String,handler : Function) : void {
   if(!eventObj[eventType])return;
   var __handler : Function = eventObj[eventType][handler];
   if(__handler == null)return;
   //trace("removeEventListener", eventType);
   _dispatcher.removeEventListener(eventType, __handler);
   delete eventObj[eventType][handler];
   if(eventObj[eventType]["count"]-- == 0) {
    delete eventObj[eventType]["count"];
    delete eventObj[eventType];
   }
  }
  private function handlerX(handler : Function,arg : Object) : Function {
   var This : EventDpMediator = this;
   return function(e : Event): void {
    handler.call(null, This, e, arg);
   };
  }
}
}
使用例子:
/**
* @author:CYPL
* @用途:EventDispatcher的中介类,方便进行传递参数
* @date:2009.7.14
* @example:
<============================================================
import CYPL.utils.EventDpMediator;
var ms=new EventDpMediator(stage);
ms.addEventListener(MouseEvent.MOUSE_DOWN,handler,{o:3});
ms.addEventListener(MouseEvent.MOUSE_UP,handler,4);
ms.addEventListener(MouseEvent.CLICK,handler);
//参数m:中介对象,e:事件对象,arg参数对象
function handler(m:EventDpMediator,e:Event,arg:*=null) {
switch (e.type) {
case MouseEvent.MOUSE_DOWN :
trace("MouseEvent.MOUSE_DOWN:",arg.o);
break;
case MouseEvent.MOUSE_UP :
trace("MouseEvent.MOUSE_UP",arg);
break;
case MouseEvent.CLICK :
trace("MouseEvent.CLICK:",arg);
break;
}
//handler内部可以通过第一个参数中介对象来remove
m.removeEventListener(MouseEvent.MOUSE_DOWN,handler);
}
//外部可以直接用中介对象来remove
ms.removeEventListener(MouseEvent.MOUSE_UP,handler);
===========================================================>
*/

1 楼 nianshi 2010-08-26  
ActionScript学习讨论小组 欢迎大家加入大家可以这里学习交流 Flex、ActionScript知识

永久域名 http://actionscript.group.iteye.com

相关推荐

    UDP.rar_as3 udp_flash as3.0 UDP_flash发送udp_udp as3_windows as3.0

    总结来说,这个"UDP.rar"压缩包中的"UDP.fla"文件很可能是为了展示如何在AS3环境中使用UDP进行通信,这对于开发实时互动的Flash应用,如多人在线游戏或音视频流媒体服务,具有重要的学习价值。通过解析和运行这个...

    Flash as3调用外部AS脚本

    总结起来,Flash AS3调用外部AS脚本是通过导入并实例化或调用类的方法实现的。这有利于代码组织和复用,同时,如果需要与JavaScript交互,可以利用`ExternalInterface`进行跨语言调用。在实际的开发过程中,了解这些...

    as3 MP3播放器

    总结来说,AS3 MP3播放器是一个利用ActionScript 3.0开发的简单音频播放程序,它利用了Flash Player内置的MP3解码能力,结合基本的用户界面和事件处理,为用户提供播放、暂停、音量控制等功能。对于想要学习AS3音频...

    AS3技术文档

    根据给定的文件信息,我们可以总结出一系列关于ActionScript 3.0(简称AS3)的关键知识点,这些知识点覆盖了AS3的多个方面,包括日期和时间管理、字符串操作、数组处理、错误处理、正则表达式使用、XML和JSON处理、...

    FlipPage-as3

    总结而言,“FlipPage-as3”项目展示了AS3在创建互动媒体时的强大功能,尤其是其在实现复杂动画和用户交互方面的能力。对于想要提升作品用户体验的开发者来说,深入研究这个项目,不仅可以学习到AS3的高级特性,还能...

    AS3录制视频并保存到本地

    总结,通过AS3和第三方库如`FlvRecorder`,我们可以实现基本的视频录制和本地保存功能。然而,随着HTML5和WebRTC的普及,越来越多的现代浏览器已经不再支持Flash技术,因此开发者可能需要考虑使用更现代的技术栈,如...

    FLASH AS3 雷达tuio+UDP协议示例

    总结来说,这个示例项目演示了如何使用Flash AS3结合TUIO和UDP协议创建一个雷达系统模拟器,使用户能够通过多点触控设备进行交互。通过学习这个示例,开发者可以了解如何处理实时输入数据、实现网络通信以及在AS3...

    as3滚动条制作

    总结,AS3滚动条制作涉及对DisplayObject容器的使用、事件监听、计算逻辑、鼠标交互以及性能和样式考虑。通过理解和实践这些要点,开发者能够创建出符合需求的、功能完善的滚动条,提升用户体验。在实际项目中,根据...

    as3 解析 json

    在ActionScript 3 (AS3)中,JSON (JavaScript Object Notation) 是一种常用的数据交换格式,它轻量级、易读易写,适合网络传输。本篇文章将深入探讨如何在AS3中解析JSON对象,以便在应用程序中使用这些数据。 一、...

    as3xls操作excel

    总结来说,as3xls是一个强大的AS3库,使开发者能够方便地在客户端处理Excel文件,特别是对于包含中文字符的场景。通过理解其核心概念和API,开发者可以创建出灵活且功能丰富的Excel解决方案。不过,随着Flash逐渐...

    AS3 JSON 包

    总结,AS3中的JSON处理是通过`JSON.stringify()`和`JSON.parse()`两个核心方法实现的,这些工具使得AS3能够轻松地与其他使用JSON的平台进行数据交互,极大地增强了其在网络通信中的能力。了解和掌握这些基础知识,...

    AS3 二维码生成及解码工具

    总结,AS3结合ZXing库为开发人员提供了强大的工具,使得在Flex或Flash平台上实现二维码功能变得简单易行。无论是创建动态生成的二维码服务,还是构建能够扫描和解析二维码的应用程序,这些技术都能提供必要的支持。

    AS3 Embed用法

    ### AS3 Embed 用法详解 #### 一、引言 随着ActionScript 3.0 (简称AS3) 的普及与发展,开发人员越来越多地利用AS3进行Flash项目的开发。在AS3环境中,开发者不再像以前版本那样依赖于Flash IDE中的库来存储图形...

    as3室内全景——away3d4.0 支持GPU加速

    总结来说,使用AS3和Away3D 4.0结合Stage3D GPU加速技术,可以创建出引人入胜的室内全景体验。开发者需要掌握AS3的基本语法、Away3D的API以及Stage3D的原理,才能充分利用GPU的优势,实现高性能的3D渲染。同时,通过...

    as3滚动文字

    总结来说,AS3滚动文字的实现涉及到ActionScript的基础知识,尤其是`TextField`类的使用,以及通过事件驱动和定时器实现动态滚动效果。理解并掌握这些知识点,可以帮助开发者创建出具有吸引力的动态文本展示。

    as3 Air ServerSocket

    ### 关于AS3 Air ServerSocket支持WebSocket的知识点 在Adobe Flash Platform中,ActionScript 3 (AS3) 提供了创建高性能网络应用的能力。本文将详细介绍如何利用 AS3 和 Adobe AIR 的 `ServerSocket` 类来实现一个...

    Flash as3 相册

    总结,Flash AS3 相册的制作涵盖了图形设计、编程、数据处理等多个方面,是学习Flash开发和AS3语法的绝佳实践项目。通过不断探索和实践,可以创造出独具特色的互动相册,为网页增添更多生动和趣味性。

    AS3与JS通信

    总结,AS3与JS的通信是构建混合型Web应用的关键技术之一。开发者需要熟悉ExternalInterface、URLVariables等API,同时注意处理安全性和兼容性问题,才能充分发挥两者结合的优势,提升用户体验。

    as3xls-1.0.1

    总结来说,as3xls-1.0.1是ActionScript 3开发者处理Excel文件的一个强大工具,通过其提供的API,开发者可以轻松地实现对Excel文件的各种操作,从而扩展Flash和Flex应用程序的功能。虽然它可能不包含所有Excel的高级...

Global site tag (gtag.js) - Google Analytics