Martin Bommeli, 18.12.07

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:

AS3
stage.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
blog comments powered by Disqus