【翻译】A situation where we shouldn't extend movieclip
我们不应该(让自己的类)继承mc类一种情况
我们可以为库中的任何一个mc元件分配一个AS2.0的类,如果这个类继承自MovieClip,当你加载(attach)这个元件,你将得到该类的一个实例,你也可以不加载它,只需要在设计阶段把它放到场景中,当时间线达到这个MovieClip所在的帧该类就得以实例化(materialize),当你建立一个接口的时候这将是非常有用的。你只需放一个mc就可以得到一个类的实例。
(more)
AS脚本类关联mc的一个问题
该问题的后果就是,对于被关联的类的私有成员,可以不被限制地加以利用。在类外或者在类内。
(more)
construct事件
去年时候发表的文章,关于flash中的隐藏construct事件:
construct事件是组件用来传递参数的,当我们在component definition面版设置好参数(或者利用Inspectable),我们在制作工具中修改了该参数的值,那么这个值就是通过construct事件传递回去的。
另外需要注意的是no instance name assigned这一行字,应该说既然是onClipEvent事件,应该存在于某个mc上,而从debugger面版返回的信息来看,其实这段代码没有加在任何地方(包括帧上)。朋友们有好多很好的回复,但是因为我找不到了,非常抱歉没有能够转过来
(more)
UIObject研究之准备(2):CSSStyleDeclaration
CSSStyleDeclaration位于mx包的styles内。
一开始该类就引入了mx.styles.CSSTextStyles,mx.styles.StyleManager两个类。
首先大概的讲一下CSSTextStyle。该类也是一个静态类,并且只有一个静态方法addTextStyles。其作用就是给一个指定的对象添加textAlign,fontWeight,color,fontFamily,textIndent,fontStyle,marginLeft,marginRight,fontSize,extDecoration,embedFonts伪属性。他使用了addProperty方法。其实原理都是类似的。设置的都是o对象的_tf内的对应属性。简单的说,就是该类接受一个对象,并且为该对象的添加一系列伪属性(就是上面的textIndent那些)
(more)
UIObject研究——准备工作(1):StyleManager
首先还是需要做两个准备工作:第一步就是阅读StyleManager的源代码。
该类位于mx包的styles下。打开他以后首先看到的是Macromedia的废话版权说明…………略过略过…………
接下来大家看到的该类所定义的各种属性,需要说明的是StyleManager是一个静态类,他的实际作用就是管理各种颜色和风格属性。根据Macromedia在该文件一开始的说明,CSS风格中也使用了该类。该类为各种需要提供省缺风格。同时该类也提供了7个接口。接下来我回一点一点说明。
(more)
【翻译】继承(Inheritance)
在OOP中多个类之间常常是继承的关系,这样一个类就可以借用(或者说继承)另一个类的属性和方法。实际上继承仅仅是技术意义上的让一个类可以使用另一个类的代码。
inheritance是一个专有名词,中文多翻译做继承。含有实现代码复用的意思。它使得程序员在类的层次上概念化(conceptual)一组类。在生物领域,继承指的是一种现存生物传递一些东西到另外一种生物上的过程。你可能听到别人说,你继承了你母亲的眼睛和你父亲的鼻子,虽然你看起来并不完全像他们。在OOP中,继承有与之类似的含义,它使一个类看起来很像另外一个类,但这个类仍然有自己的特性。
我们在本章的最后将会讨论继承的优点和其它代替继承的方法,在"The Theory of Inheritance"这部分。但是首先我们需要学习建立继承的语法。
(more)
奇怪的constructor
首先这是一个关于constructor的问题(最近我发现的关于constructor的问题实在太多了...)从mhiguera的blog上看到,constructor()方法在子类方面的表现实在是不太好。
(more)
flash模拟inner classes
thinking in java中翻译inner classes做内隐类。意指那些定义在类中的类。但是AS并不支持inner classes,mhiguera提出利用AS1.0的prototype来模拟inner classes,下面为他的类代码:
(more)
推荐:)一个非常好的ActionScript2.0类文档
在线ActionScript2.0类文档:http://www.visiblearea.com/visdoc/examples/mm/all/index.html
非常感谢Tomato老哥的提供,他的blog地址:)http://blog.csdn.net/crazytomato
bug(3)flashMX中的constructor的问题
该问题只表现在flashMX中,因为AS1.0没有完全的类的概念,所以也没有区分类方法。
function myclass() {}//构造一个新的myclass类
trace(myclass.constructor("www.cn-flash.com"));//通过trace调用myclass的构造函数
可是结果竟然是www.cn-flash.com
目前为止,我仍然不能对此做出一个很好的解释:)姑且算是一个bug把,在mx2004下,不能通过myclass直接访问constructor()方法了(MM终于也认识到了这个问题哈),而且也不会出现这个bug了。不管怎么说,修改好了就是好的:)
bug(2)onRelease事件?脱离mc响应
class someComponent{
private var prop:String="www.cn-flash.com";
function onRelease():Void{
trace(prop);}
}
(more)
ASNative方法列表
flashcoders-wiki最近登陆似乎有些问题。感谢AOL提供关于ASNative讨论的备份。现挑拣一些重要的内容整理如下:
Robert Penner总结说:
ASNative (i, j)会返回一个函数引用,就好像flash中所有的函数都保存在一个列表中一样。你可以用ASNative通过行和列来访问它们。一般的用法是,把ASNative执行的结果分配给一个变量,通过调用变量来使用ASNative。
请看下面的代码:
t = ASnative(100, 4); // trace函数
t("hi"); // 输出: hi
(more)
【翻译】Accessor Methods[存取方法]_局部变量
实例属性同类的实例相关联,类属性同类相关联。而只要对象存在,那么类属性和实例属性就存在。但有些时候我们需要一个临时的变量,局部变量(本地变量)就是这样一个在方法或者函数调用期间临时存放数据的容器。当方法跟函数结束执行,他们就会被自动删除。(函数嵌套是此规则的例外,我们会在后面的章节继续介绍)
(more)
【翻译】Accessor Methods[存取方法]_概述
因为这部分比较多,所以捡有用的翻译:)
对于实例属性,定义为private是一种很好的符合OOP思想的习惯。这意味着他们不能在类之外被访问(具体不说了,参考之前翻译的文章吧:)。如果需要在类之外访问私有属性,我们需要使用存取方法(Accessor Methods)。他返回一个属性的值或者设置一个属性的值。
(more)
Selection.setSelection——flash的BUG?!
someListener = new Object();
someListener.onSetFocus = function() {
Selection.setSelection(0, Selection.getFocus().length);
};
Selection.addListener(someListener);
(more)
4.4.1.2 管理参数/属性命名冲突
当一个实例属性或者一个类属性与方法参数同名,参数优先。
方法中引用的是参数,而不是与参数或者方法同名的属性。但是我们仍然可以通过this来访问方法。比如下面的setHeight( )方法有一个height参数,它与height属性同名..
(more)
【翻译】利用this关键字引用当前对象
在方法定义中,你可能经常希望引用调用这个方法的对象——这就是所谓的当前的对象(current object)。考虑代码b.getArea(),当这段代码执行,它通过b对象调用getArea方法。但是在getArea方法的代码的内部并没有一个类似b这样的变量。那么我们该如何在方法的代码中引用当前的对象呢?在方法中使用当前的对象,我们使用this关键字。你可能会问,我们是否还可以把对象引用当作方法的一个参数,来达到目的,我们确实可以那么做,但是使用this关键字帮助我们保持良好的封装性,排除了对外部的类的需要对对象内在需求的影响。通过this引用当前的对象,允许一个对象引用它自己,而无须额外的参数,因此代码也更加清晰。
(more)
EAS2.0中关于intrinsic修饰符的解释
instrinsic修饰符用来分配一个已经编译好的类,而无须给出类的代码。比如内置类(内置flashPlayer中)。一个类定义时被instrinsic修饰,那么就不能有方法内部的代码跟属性值,这种类的定义只是具体定义了方法名跟数据类型,为的就是编译时的类型检查(type checking)
(more)
内置类的数据类型的一些信息
以下翻译自Essential ActionScript2.0第三章:数据类型
内置类数据类型的信息:
当我们使用静态类型(static typing)以及AS2.0的内置类时,你必须遵守每个类定义的数据类型,举个例子,如果你存储一个TextFormat对象在一个已定义类型的变量中,当分配值给它的属性时,你必须使用正确的数据类型。下面的代码产生一个错误。因为TextFormat.align属性接受(require)一个字符串(String),但是我们使用的却是一个布尔值....
(more)
这部分比较长,所以一个句子一个句子的翻译是不太可能的了,我只挑拣了一些重要的内容翻译给大家,我还是那句话,我只是给大家一个导读的作用,希望,同时也是需要,大家下去自己看原文。
一个类(class)是创建一个对象(也叫实例)的模版(template)。类是一个面向对象的程序的基本单位。每一个面向对象的应用程序至少包括一个类。典型的应用程序包括很多类。一个程序通过类来产生实例,这些实例决定了这个程序可以做到的事情...
(more)
对toplevel.as文件的疑问被证实
我曾经发过一篇blog,讲的是对toplevel.as的疑惑,昨天阅读EAS2.0,文中的假设得到了证实
按照EAS2.0中的说法..
(more)
对Macromedia\Flash MX 2004\en\Configuration的大胆假设
无论C:\windows也好还是macromeida的安装目录下都有Macromedia\Flash MX 2004\en\Configuration这个目录,内有很多有趣的文件——首先是一堆.as文件,我注意到这个文件夹,是因为那一天发布一个fla的时候提示下面的错误: **Error** C:\WINDOWS\Application Data\Macromedia\Flash MX 2004\en\Configuration\Classes\toplevel.as: Line 66: You must export your movie as Flash 6 to use this action. #endinitclip 按照路径打开toplevel.as文件,竟然发现里面是顶级函数,呵呵呵呵...
(more)
【翻译】compatible types相容模式
我们以前学过,一个定义了类型的变量只能存储一个相应类型的值。直观一点的说,String类型与Number类型就是不相容的(incompatible)(我们暂且不说String类型与Number类型存在转换的可能性)。短语"compatible types"是一个严格的技术定义。一个类型,X,同另外一个类型匹配(compatible),Y,如果X的类型是Y,或者如果X是Y的任何一个子类型 (subtype)...
(more)
Macromedia Flash MX 2004 ActionScript
翻译自Macromedia Flash MX 2004 ActionScript的一小部分
(more)
重新定义String类的substr方法
那天听到james说AS1.0中不可以重新定义String类的substr方法,他在flashMX内测试的时候可以实现重新定义substr方法,但是在flashplayer的环境下就无法生效了。感到很意外阿,所以自己定义了一个substr方法try了一下...
(more)
方法重载method overloading
这篇文章来自Essential ActionScript 2.0,是拾取其中关于方法重载的内容而翻译的,最初写于2004-8-4,关于AS2.0
(more)
FUIComponentClass手记——PRIVATE METHODS
介绍FUIComponentClass中的私有方法部分,写于2004-8-4,AS1.0
(more)
FUIComponentClass——实战setEnabled
根据FUIComponentClass源代码介绍setEnabled的超类实现,写于2004-8-2,AS1.0
(more)
FUIComponentClass手记——PUBLIC METHODS
介绍FUIComponentClass中的公有方法部分,写于2004-8-2,AS1.0
(more)
FUIComponentClass手记——init()方法
介绍FUIComponentClass的init方法,写于2004-7-31,AS1.0
(more)
super对象
介绍Super对象,写于2004-7-30,AS1.0
(more)