效果示例
主要源码如下:
package
{
import feathers.controls.Alert;
import feathers.controls.Application;
import feathers.controls.Button;
import feathers.controls.LayoutGroup;
import feathers.core.PopUpManager;
import feathers.data.ArrayCollection;
import feathers.events.ButtonBarEvent;
import feathers.events.TriggerEvent;
import feathers.layout.HorizontalLayout;
import feathers.layout.VerticalLayout;
import flash.display.Loader;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.media.Sound;
import flash.system.ApplicationDomain;
import flash.utils.ByteArray;
public class EmbedRes extends Application
{
[Embed(source="res/sound.mp3")]
private static var SoundRes:Class;
[Embed(source="res/photo.png")]
private static var PhotoRes:Class;
[Embed(source="res/game.swf",mimeType="application/octet-stream")]
private static var GameRes:Class;
[Embed(source="res/EmbedResLib.swf",mimeType="application/octet-stream")]
private static var ResLib:Class;
[Embed(source="res/FlaLib.swf",mimeType="application/octet-stream")]
private static var FlaLib:Class;
private var container:LayoutGroup;
private var gameLoader:Loader;
private var resLibDomain:ApplicationDomain;
private var flaLibDomain:ApplicationDomain;
public function EmbedRes()
{
super();
haxe.initSwc(null);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
buildUI();
}
private function buildUI():void{
var rootLayout:VerticalLayout = new VerticalLayout();
rootLayout.paddingLeft = 10;
rootLayout.paddingTop = 10;
rootLayout.paddingRight = 10;
rootLayout.paddingBottom = 10;
rootLayout.gap = 10;
var root:LayoutGroup = new LayoutGroup();
root.layout = rootLayout;
addChild(root);
var buttonBarLayout:HorizontalLayout = new HorizontalLayout();
buttonBarLayout.gap = 10;
var buttonBar:LayoutGroup = new LayoutGroup();
buttonBar.layout = buttonBarLayout;
root.addChild(buttonBar);
container = new LayoutGroup();
root.addChild(container);
var btn:Button = new Button("Play sound");
btn.addEventListener(TriggerEvent.TRIGGER,playSoundBtnClicked);
buttonBar.addChild(btn);
btn = new Button("Show photo");
btn.addEventListener(TriggerEvent.TRIGGER,showPhotoBtnClicked);
buttonBar.addChild(btn);
btn = new Button("Play SWF game");
btn.addEventListener(TriggerEvent.TRIGGER,showGameSwfBtnClicked);
buttonBar.addChild(btn);
btn = new Button("SWF Dll");
btn.addEventListener(TriggerEvent.TRIGGER,useSwfDllBtnClicked);
buttonBar.addChild(btn);
btn = new Button("Fla Res");
btn.addEventListener(TriggerEvent.TRIGGER,useFlaSwfBtnClicked);
buttonBar.addChild(btn);
}
private function playSoundBtnClicked(event:TriggerEvent):void{
(new SoundRes() as Sound).play();
}
private function showPhotoBtnClicked(event:TriggerEvent):void{
clearContainer();
container.addChild(new PhotoRes());
}
private function showGameSwfBtnClicked(event:TriggerEvent):void{
clearContainer();
gameLoader = new Loader();
gameLoader.loadBytes(new GameRes());
container.addChild(gameLoader);
}
private function clearContainer():void{
if(gameLoader){
gameLoader.unload();
gameLoader.unloadAndStop();
if(gameLoader.parent){
gameLoader.parent.removeChild(gameLoader);
}
gameLoader = null;
}
container.removeChildren();
}
private function useSwfDllBtnClicked(e:TriggerEvent):void{
if(resLibDomain){
showStringFromResLib(resLibDomain);
}else{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event):void{
resLibDomain = loader.contentLoaderInfo.applicationDomain;
showStringFromResLib(resLibDomain);
});
var bytes:ByteArray = new ResLib();
loader.loadBytes(bytes);
}
}
private function showStringFromResLib(resLibDomain:ApplicationDomain):void{
var Hello:* = resLibDomain.getDefinition("top.yunp.Hello");
var h:* = new Hello();
var alert:Alert = new Alert(h.sayHello("ActionScript"));
alert.titleText="Definition in SWF Dll";
alert.buttonsDataProvider = new ArrayCollection(["OK"]);
alert.addEventListener(ButtonBarEvent.ITEM_TRIGGER,function(e:*):void{
PopUpManager.removePopUp(alert);
});
PopUpManager.addPopUp(alert,this);
}
private function useFlaSwfBtnClicked(e:*):void{
clearContainer();
if(flaLibDomain){
showFlaLibRes(flaLibDomain);
}else{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:*):void{
flaLibDomain = loader.contentLoaderInfo.applicationDomain;
showFlaLibRes(flaLibDomain);
});
loader.loadBytes(new FlaLib());
}
}
private function showFlaLibRes(domain:ApplicationDomain):void{
clearContainer();
var BlueRect:* = domain.getDefinition("BlueRect");
var r:* = new BlueRect();
container.addChild(r);
}
}
}