在.net中可以借助于多态实现,但AS3中目前尚没有多态,怎么实现?

在.net中可以借助于多态实现,但AS3中目前尚没有多态,怎么实现?

sban写了一个例子,用于展示namespace的用法,及多态函数的实现及调用,在这里查看Demo及源码。

sban 于北京朝阳门

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="creationCompleteHandler(event)"
layout="absolute" fontSize="12" width="526" height="169" horizontalAlign="center" verticalAlign="middle" viewSourceURL="srcview/index.html">
<!--
Copyright (c) 2007. sban <http://blog.sban.com.cn/>
All rights reserved.
About Author
sban is an software architect focusing on flex/flash and .net,
who living in Bejing China now.
you can contact me in the following way:
MSN/Email: sban#live.cn
or visit sban blog: http://blog.sban.com.cn/
SOME LINKS:
flex5 is a opensource blog basing on flex/flash.
flex5 Google Group:http://groups.google.com/group/flex5/
flex5 Code:http://code.google.com/p/flex5/
fllib is an actionscript library using both in flex and flash:
fllib Google Group:http://groups.google.com/group/fllib/
fllib Code:http://code.google.com/p/fllib/
This Program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This Program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
-->
<mx:Script>
<![CDATA[
import flash.net.navigateToURL;
import mx.controls.ComboBox;
import mx.controls.Alert;
private var roleDelegate : Namespace;
namespace userRole = "userNamespace";
namespace adminRole = "adminNamespace";
private function creationCompleteHandler(event : Event) : void
{
roleDelegate = adminRole;
}
userRole function login(event : Event) : void
{
Alert.show(&apos;user login.&apos;, &apos;sban blog&apos;);
}
adminRole function login(event : Event) : void
{
Alert.show(&apos;admin login.&apos;, &apos;sban blog&apos;);
}
private function roleSelectChangeHandler( event : Event) : void
{
if(ComboBox(event.currentTarget).selectedItem.data == 0)
{
roleDelegate = adminRole;
}else{
roleDelegate = userRole;
}
}
private function loginHandler(event : Event) : void
{
                  roleDelegate::login(event);
}
]]>
</mx:Script>
<mx:Label text="Select Account Type pls :" x="63" y="74"/>
<mx:ComboBox change="roleSelectChangeHandler(event)" x="232" y="72">
<mx:dataProvider>
<mx:Object label="Administrator" data="0" />
<mx:Object label="User" data="1" />
</mx:dataProvider>
</mx:ComboBox>
<mx:Button label="Login" click="loginHandler(event)" width="88" x="374" y="72"/>
<mx:LinkButton x="331" y="139"  label="http://blog.sban.com.cn/" textDecoration="underline"
useHandCursor="true" buttonMode="true" click="flash.net.navigateToURL(new URLRequest(&apos;http://blog.sban.com.cn/&apos;))"/>
</mx:Application>