2010-11-11 8 views
0

J'ai ces images qui se chargeront lorsque j'écrirai une certaine chaîne de texte mais je ne sais pas comment combiner les fonctions pour en faire une générique travaillera pour toutes les images. Ce sont juste deux et ils sont fondamentalement la même chose sauf que je dois faire chaque fonction (quelque chose) 1 et (quelque chose) 2 pour l'image suivante. J'ai besoin d'aide pour ce faire.Actionscript 3.0 Combinaison de fonctions pour créer une fonction générique qui peut être appliquée à plusieurs images

function onInput(event:TextEvent):void { 
if(ti.text.search('a')!=-1) addChild(ottefct); 
else if(ti.text.search('b')!=-1) addChild(rnd); 

var oeffect:Loader = new Loader(); 
oeffect.load(new URLRequest("http://i54.tinypic.com/anom5d.png")); 
oeffect.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete); 
var ottefct:Sprite = new Sprite(); 
function onLoadingComplete(event:Event):void 
{ 
    ottefct.addChild(event.currentTarget.loader.content); 
    ottefct.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
    ottefct.addEventListener(MouseEvent.MOUSE_UP, drop); 
    ottefct.doubleClickEnabled = true; 
    ottefct.addEventListener(MouseEvent.MOUSE_WHEEL, rotate) 
    ottefct.addEventListener(MouseEvent.DOUBLE_CLICK, unrotate) 
    ottefct.height=180 
    ottefct.width=124 
} 
function drag(event:MouseEvent):void{ 
    ottefct.startDrag() 
    } 
function drop(event:MouseEvent):void{ 
    ottefct.stopDrag() 
} 
function rotate(event:MouseEvent):void{ 
    ottefct.rotation = 90 
    } 
function unrotate(event:MouseEvent):void{ 
    ottefct.rotation = 0 
    } 
//--------------------------- 

var rednova:Loader = new Loader(); 
rednova.load(new URLRequest("http://i53.tinypic.com/2dv7dao.png")); 
rednova.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete1); 
var rnd:Sprite = new Sprite(); 
function onLoadingComplete1(event:Event):void 
{ 
    rnd.addChild(event.currentTarget.loader.content); 
    rnd.addEventListener(MouseEvent.MOUSE_DOWN, drag1); 
    rnd.addEventListener(MouseEvent.MOUSE_UP, drop1); 
    ottefct.addEventListener(MouseEvent.MOUSE_WHEEL, rotate1) 
    ottefct.addEventListener(MouseEvent.DOUBLE_CLICK, unrotate1) 
    rnd.height=180 
    rnd.width=124 
} 
function drag1(event:MouseEvent):void{ 
    rnd.startDrag() 
    } 
function drop1(event:MouseEvent):void{ 
    rnd.stopDrag() 
} 
function rotate1(event:MouseEvent):void{ 
    rnd.rotation = 90 
    } 
function unrotate1(event:MouseEvent):void{ 
    rnd.rotation = 0 
    } 

Répondre

2

Vous avez ennuyé. Ici, allez-y. Cependant, cela devrait vraiment être dans une classe ....

//Dictionary to store images (can use Array) 
var loaded_images:Dictionary = new Dictionary(); 

function load_image(url:String, id_name:String) 
{ 
    var loader:Loader = new Loader(); 
    loader.name = id_name; 
    var url_req:URLRequest = new URLRequest(url); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete); 
    loader.load(url_req); 
} 

function onLoadingComplete(evt:Event):void 
{ 
    var img_name:String = evt.currentTarget.loader.name 
    var spr_box:Sprite = new Sprite(); 
    spr_box.addChild(evt.currentTarget.loader); 

    spr_box.mouseChildren = false; 
    spr_box.doubleClickEnabled = true; 

    spr_box.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
    spr_box.addEventListener(MouseEvent.MOUSE_UP, drop); 
    spr_box.addEventListener(MouseEvent.MOUSE_WHEEL, rotate); 
    spr_box.addEventListener(MouseEvent.DOUBLE_CLICK , unrotate); 

    //Shouldn't really hard code this here 
    spr_box.width = 180; 
    spr_box.height = 124; 

    // - Since this isn't a class, I'd do this instead: 
    //spr_box.addEventListener(Event.ADDED_TO_STAGE, resize_img); 

    this.addChild(spr_box); 
    loaded_images[img_name] = spr_box; 
} 

//Because this event function lets you control individual image dimensions 
/* 
function resize_img(evt:Event):void 
{ 
    switch (evt.currentTarget.name) 
    { 
     case "ImageOne": 
      evt.currentTarget.width = 250; 
      evt.currentTarget.height = 250; 
      break; 
     default: 
      evt.currentTarget.width = 180; 
      evt.currentTarget.height = 124; 
      break; 
    } 
} 
*/ 

function drag(evt:MouseEvent):void 
{ 
    evt.currentTarget.startDrag() 
} 

function drop(evt:MouseEvent):void 
{ 
    evt.currentTarget.stopDrag() 
} 

function rotate(evt:MouseEvent):void 
{ 
    evt.currentTarget.rotation = 90 
} 

function unrotate(evt:MouseEvent):void 
{ 
    evt.currentTarget.rotation = 0 
} 

//Few examples of use... 
load_image("http://www.google.co.nz/images/nav_logo26.png", "ImageOne"); 
load_image("http://l.yimg.com/ao/i/nzunihead/logo-yahooxtra_1_4.png", "RandomName"); 
0

Je n'ai pas testé cela, mais vous devriez avoir l'idée générale. Si vous suivez les mêmes principes, vous pouvez même être en mesure d'optimiser encore plus loin;)
ALs, n'oubliez pas de supprimer les écouteurs d'événement lorsque vous avez terminé avec eux!

function loadImage(url:String):void 
{ 
    var loader:Loader = new Loader(); 

    //use the name property to identify your Loader instance 
    loader.name = url; 

    //add the event listener before calling load()! 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete); 
    loader.load(new URLRequest(url)); 
} 

function onLoadingComplete(event:Event):void 
{ 
     switch(event.currentTarget.loader.name) 
     { 
      //depending on the url add to the relevant Sprite instance 
      case "add the url here": 
      ottefct.addChild(event.currentTarget.loader.content); 
      addListeners(ottefct); 
      break; 

      case "add the url here": 
      rnd.addChild(event.currentTarget.loader.content); 
      addListeners(rnd); 
      break; 
     } 
} 

function addListeners(sp:Sprite):void 
{ 

    sp.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
    sp.addEventListener(MouseEvent.MOUSE_UP, drop); 
    sp.doubleClickEnabled = true; 
    sp.addEventListener(MouseEvent.MOUSE_WHEEL, rotate) 
    sp.addEventListener(MouseEvent.DOUBLE_CLICK, unrotate) 
}