method_missing in ActionScript 3/Flex
method_missing in ActionScript 3/Flex
method_missing是Ruby magic中的一员,如果合理使用它可以用来做非常amazing的事情,而不正确的使用也会导致
非常危险的后果。
Rails dynamic finders是一个好例子。
这里是一些其他的例子。
在
AS3中使用
Proxy class也可以实现类似method_missing的东西。这里是一个简单的例子:
import flash.utils.Proxy;
import flash.utils.flash_proxy;
dynamic public class BaseProxy extends Proxy
{
flash_proxy override function callProperty(method: *, ...args): * {
try {
this[method].apply(this, args);
} finally {
return methodMissing (method, args);
}
}
protected function methodMissing(method : *, args : Array) : Object {
throw{ new Error("Method Missing")};
}
}
callProperty方法在这个类以及集成这个类的类的一个方法被调用时调用。如果我们创建另一个集成它的类:
public dynamic class Model extends BaseProxy
{
public function myMethod (arg1 : String, arg2 : Boolean) : String {
return arg1 + " " + arg2;
}
}
然后允许下面的语句:
import flash.display.Sprite;
public class MethodMissingExample extends Sprite
{
public function MethodMissingExample()
{
var m : Model = new Model();
trace(m.myMethod("I exist", true));
trace(m.someMethod(0, false, "x"));
}
}
你将会在console看到如下内容:
I exist true
Error: Method Missing
第一个调用成功了,因为myMethod定义了。someMethod没有定义,所以callProperty里的try块失败并抛出一个Method Missing错误。
现在,如果我们像这样在Model类里覆盖methodMissing:
public dynamic class Model extends BaseProxy
{
public function myMethod (arg1 : String, arg2 : Boolean) : String {
return arg1 + " " + arg2;
}
override protected function methodMissing(method : *, args : Array) : Object {
return "You called " + method + " with" + args.toString();
}
}
然后运行上面的trace语句,你将在console看到如下内容:
I exist true
You called someMethod with 0,false,x
分享到:
- 2007-08-07 18:05
- 浏览 2010
- 评论(0)
- 论坛回复 / 浏览 (0 / 2149)
- 查看更多
相关推荐
在“flex3-cn-api..zip_flex_flex 3 api_flex3 api_flex3 a_flex3 api”这个压缩包中,包含了Flex 3 API的中文文档,这对于Flex开发者来说是一个非常宝贵的资源。文档名为“Flex3拞暥API..chm”,其中的“拞暥”可能...
本文将以"EmployeeManager.zip_LCDS Flex_flex_flex LC_flex lcds"为例,深入探讨Flex与LCDS在构建基于RIA的应用程序时的关键知识点。 标题"EmployeeManager.zip"暗示这是一个关于员工管理的项目,而"LCDS Flex"则...
Actionscript/Flex 3.0 Coding Convention 代码规范 v1.1 是一份由艺思哲软件(上海)有限公司在2008年发布的详细编程规范文档,旨在为ActionScript 3.0和Flex 3.0开发者提供一套统一的编码标准,提升代码质量和可读性...
在"flex+php.rar_Flex+PHP_PHP Flex_felx p_flex_php"这个压缩包中,我们可以看到两个关键文件:"www.pudn.com.txt"和"rest_with_database"。这可能代表了两种不同的交互方式:通过Web服务和数据库操作。 1. **Flex...
Flash Builder 4是基于Eclipse IDE的开发工具,用于创建、测试和调试Flex和ActionScript项目。 Flex 4中的菜单系统是用户界面设计的关键部分,它提供了可自定义、交互式的下拉菜单功能。在Flex 4中,菜单组件的使用...
在本项目"DDP.rar_ActionScript3.0_flex"中,我们主要关注的是一个使用这些技术实现的对对碰小游戏。 ActionScript3.0是Flash Player和Adobe AIR平台上的编程语言,它基于ECMAScript,提供了面向对象的特性和高性能...
ActionScript 3.0 (AS3) 是 Flex 3 开发中的主要编程语言。它是一种面向对象的编程语言,支持类、接口、事件处理等高级编程特性。相比于早期版本,ActionScript 3.0 在性能方面有了显著提升,尤其是在处理大量数据和...
1. Flex:Flex是一种用于构建富互联网应用程序(RIA)的开源框架,主要基于ActionScript编程语言和MXML标记语言。它由Adobe公司开发,允许开发者创建具有丰富图形用户界面的应用程序,这些应用程序能够在多个浏览器...
4. `arcgis_fl`与`arcgis_flex` 这两个标签可能是指ArcGIS与Flex的结合,`arcgis_fl`可能是一个简写或缩写,代表ArcGIS在Flex环境下的应用开发。它们强调了GIS功能与Flex编程的融合,为开发者提供了灵活、可扩展的...
3. **案例分析**:提供示例代码和实际应用案例,帮助理解如何将GIS功能集成到Flex应用中。 4. **最佳实践**:分享开发过程中的一些最佳实践,如性能优化、错误处理和用户体验设计。 5. **教程和指南**:逐步指导...
《Flex第一步:基于ActionScript 3.0的Flex 2应用开发》这本书是为初学者设计的,旨在帮助读者快速掌握Adobe Flex 2框架的使用,特别是与ActionScript 3.0的集成。Flex是一个开源的开发平台,主要用于构建富互联网...
标题 "Demo.rar_3d_flex_flex Graphic._pv3d flex_pv3d fl" 提供的信息表明,这个压缩包包含了一个与3D图形相关的Flex应用程序的演示,使用了PV3D库。描述中提到“利用PV3D做的flex DEMO 实现了#3D特效”,进一步...
ActionScript3学flex3必须掌握的东西,就是flex的javascript类似的东西,希望对大家有帮助
这个"dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu"的压缩包文件,显然是与Flex4相关的资源,特别是关于创建酷炫的菜单导航和皮肤设计。 在Flex4中,菜单(Menu)是一种常见的用户界面元素...
**ModestMaps是一个轻量级且灵活的开源地图库,主要设计用于AS2(ActionScript 2)和AS3(ActionScript 3)环境,同时也支持Python。该库以其高效和可扩展性著称,适合开发类似Google Map的交互式地图应用。** ### ...
通过阅读"ActionScript 3.0.pdf",你可以深入理解这些概念,学习如何使用AS3编写高效、可维护的代码,并且掌握如何利用Flex框架构建动态的Web应用程序。对于那些想要学习英文并同时提升Flex开发技能的人来说,这个...
标题中的“srl.rar_ColorMatrixArrays.as_SRL_flex_flex 操作系统_flex_portal”提到了几个关键点,它们是“srl.rar”(压缩文件名)、“ColorMatrixArrays.as”(一个AS(ActionScript)文件)、“SRL”(可能是一...
系统文件“UserInfoSys”很可能包含了整个项目的源代码结构,包括Flex的MXML和ActionScript文件,以及Struts2的Action、配置文件(struts.xml)等。通过深入研究这些文件,开发者可以了解系统架构,学习如何在实际...
《泡泡龙游戏源码解析——基于Flex/Flash的ActionScript 3实现》 泡泡龙是一款深受全球玩家喜爱的经典消除类游戏,它通过发射不同颜色的泡泡来实现匹配消除,具有简单易懂的操作和丰富的关卡设计。本篇将深入探讨一...
《鹰眼漫游效果:ActionScript与Flex的精彩融合》 在数字媒体和交互式设计领域,Flash技术一直是创造动态视觉体验的重要工具。本资源"yingyan.rar"为我们揭示了如何利用ActionScript和Flex技术来实现一个独特的...