接着上次有关Flex中类重命名操作的讨论,我们接下来看一下Flex中类在文件中的组织关系。
在Flex中,一个.as文件只能创建一个类代码,我刚开始学Flex的时候不知道,还以为代码哪里写错了,因为我个人习惯在程序中把多个相关的 类写在同一个文件中,比如在VS写C#代码时我就经常这样做。
OK,我们写一点小代码来看一下在Flex中是不是真的一个as文件只能保留一个类的代码;
为了方便我们继续用上次我们写好的Boys类(我们在上一次中把Boy改名为Boys了)。
Boys.as文件的代码
package iLinker
{
import flash.events.Event;
public class Boys
{
public var intAge:int;
public var strName:String;
public function Boys(name:String,age:int)
{
intAge=age;
strName=name;
}
public function GrowUp():void
{
intAge+=1;
}
}
}
调用的MXML代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()">
<mx:Script>
<![CDATA[
import iLinker.Boys;
private var oneBoy:Boys;
private function init():void
{
oneBoy=new Boys("peter",10);
txtName.text=oneBoy.strName;
}
]]>
</mx:Script>
<mx:Style source="defaults.css"/>
<mx:TextInput id="txtName" x="59" y="10"/>
</mx:Application>
这些代码运行完全正确,我现在假设我需要在Boys.as文件中再增加一个Girls类,增加后代码如下:。
package iLinker
{
import flash.events.Event;
public class Girls
{
public var strNickName:String;
public function Girls(nickName:String)
{
strNickName=nickName;
}
}
public class Boys
{
public var intAge:int;
public var strName:String;
public function Boys(name:String,age:int)
{
intAge=age;
strName=name;
}
public function GrowUp():void
{
intAge+=1;
}
}
}
增加完代码之后我不进行任何其他代码的更改,运行当前的MXML应用,发现Flex会弹出如下错误提示窗口:
刚开始我还以为是代码哪里错了,最后才发现Flex不能在同一个.as文件中同时存在两个类,这个后来我想了一下,可能跟上次我们讲的重命名 类的名称这个操作有关系,因为如果一个文件对应一个类的话我们上次讨论的那个类重命名的操作功能才得以实现。
如上我们可以得到一个简单的结论:Flex中一个.as文件只能保存一个类,而且.as文件的名称必须和类名保持一致,如果不一致的会也会出现 错误。