2010-11-11 42 views
0

我有這些圖像,將加載時,當我輸入一定的文本字符串,但我不知道如何組合功能,使一個通用的將適用於所有圖像。 這些只是兩個,他們基本上是相同的東西,除了我必須使每個功能(東西)1,然後(東西)2爲下一個圖像。 我需要一些幫助。Actionscript 3.0組合功能,使一個通用的功能,可以應用於多個圖像

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 
    } 

回答

2

覺得無聊。在這裏你走了。然而,這確實應該在一類....

//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

我沒有測試過這一點,但你應該得到的總體思路。如果你遵循相同的原則,你甚至可以進一步優化;)
同樣,當你完成它們時,不要忘記刪除事件監聽器!

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) 
} 
相關問題