Flash: Actionscript AS3 Code-Snippets
Hier ein paar kleine aber sehr nützliches Actionscript-Code-Snippets...
Das erste ist um festzustellen ob das swf-File Lokal oder auf nem Server ausgeführt wird:
AS3
if(stage.loaderInfo.url.indexOf("file:") != -1){
trace("Lokal");
}else{
trace("Server");
}
AS2
if(_url.indexOf("file") != -1){
trace("Lokal");
}else{
trace("Server");
}
Dieses Snippet ist um ein ContextMenu (recht-maustasten-menu auf einer SWF) mit Link zu erstellen:
AS3
function goToContextMenuWebsite1(event:ContextMenuEvent):void {
var weblink:URLRequest = new URLRequest("http://www.feinheit.ch/");
navigateToURL(weblink,"_blank");
}
var cmnu:ContextMenu = new ContextMenu();
cmnu.hideBuiltInItems();
var cmnui:ContextMenuItem = new ContextMenuItem("by FEINHEIT");
cmnui.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goToContextMenuWebsite1);
cmnu.customItems.push(cmnui);
this.contextMenu = cmnu;
AS2
function goToContextMenuWebsite1(){
getURL("http://www.feinheit.ch");
};
var cmnu:ContextMenu = new ContextMenu();
cmnu.hideBuiltInItems();
cmnu.customItems.push(new ContextMenuItem("by FEINHEIT",goToContextMenuWebsite1));
this.menu = cmnu;
Wenn man per Flashvars eine Variable einlesen möchte kann man dies nicht mehr mit _root.deinevariable machen. Hier ein Beispiel wie man eine Variable einliesst und sie Definiert, falls sie "leer" reinkommt:
html/js (swfObject einbindung)
var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
so.addVariable("sprache", "en");
so.write("flashcontent");
AS3
var sprache:String = stage.loaderInfo.parameters["sprache"]; !sprache ? sprache = "de" : sprache = sprache; trace(sprache);
AS2
!_root.sprache ? _root.sprache = "de" : _root.sprache = _root.sprache; trace(_root.sprache);
Bei as3 gibt's kein onPress, onRelase usw. mehr. Man muss an den MovieClip nen Listener anhängen. Um dann auch noch den richtigen Curser-Status anzuzeigen muss man den buttonMode auf true setzen. useHandCursor kann man bei as3 nur noch auf Button-Objekte setzen.
AS3
function meinefunction(e:MouseEvent):void{
trace("Ich bin ein Button");
}
meinbutton_btn.addEventListener(MouseEvent.CLICK, meinefunction);
meinbutton_btn.buttonMode = true;
meinbutton_btn.mouseChildren = false;
AS2
meinbutton_btn.onPress = function(){
trace("Ich bin ein Button");
}
Einfache einfärbung eines MovieClips:
AS3//import flash.geom.ColorTransform; var color_transf:ColorTransform = mc.transform.colorTransform; color_transf.color = 0xff0000; mc.transform.colorTransform = color_transf;
AS2
new Color(mc).setRGB(0xff0000);
Contextmenu ausblenden:
AS3stage.showDefaultContextMenu = false;
AS2
Stage.showMenu = false;
In AS3 ist es nun entlich möglich Regular expressions zu nutzen. Hier ein einfaches Beispiel mit einem e-Mail check:
AS3
function checkEmail (mail:String):Boolean
{
var regExpPattern : RegExp = /^[0-9a-zA-Z][-._a-zA-Z0-9]*@([0-9a-zA-Z][-._0-9a-zA-Z]*\.)+[a-zA-Z]{2,6}$/;
if( mail.match(regExpPattern) == null ) {
return false;
} else {
return true;
}
}
trace(checkEmail("martin@@domain.ch")); //false
trace(checkEmail("martin@domain.ch")); //true
trace(checkEmail("martin@domain")); //false
trace(checkEmail("@domain.de")); //false
trace(checkEmail("martin.bommeli@domain.ch")); //true
trace(checkEmail("martin bommeli@domain.ch")); //false
trace(checkEmail("martin+bommeli@domain.ch")); //false
trace(checkEmail("martin_bommeli@subdomain.domain.ch")); //true
