2008-12-23 19 views
5

में छवि आकार ढूंढना (लोड किया गया) छवि वर्तमान में छवि लोड करने के लिए निम्न फ़ंक्शन का उपयोग कर रहा है, हालांकि मैं लोड की गई छवि की चौड़ाई को खोजने का कोई तरीका नहीं समझ पाया, जिसे मैं पहले उपयोग करना चाहता हूं एक ही समारोह का उपयोग कर अगली छवि रखो।AS3 (एक्शन स्क्रिप्ट 3.0)

ध्यान दें कि q एक चर (एक संख्या) है जिसका उपयोग अलग-अलग छवियों को लोड करने के लिए किया जाता है।

= एक्स मैं भरी हुई छवि चौड़ाई obtainning मदद की जरूरत है ...

function LoadImage(q) 
{ 
    var imageLoader:Loader = new Loader(); 
    var image:URLRequest = new URLRequest("GalleryImages/Album1/"+q+".jpg"); 
    imageLoader.load(image); 
    addChild (imageLoader); 
    imageLoader.x = 0 + CurrentXLength; 
    imageLoader.y = 0; 
    imageLoader.name = "image"+q; 
    trace(imageLoader.x) 
} 

उत्तर

1

चौड़ाई आप Event.COMPLETE को संभालने के लिए सौंपा समारोह के भीतर यह करना चाहिए उपयोग करने के लिए।

"आप आइटम आप लोड करना चाहते हैं एक सरणी चाहते हैं। आप शायद XML के साथ में इस डेटा लोड करना चाहिए तो यह गतिशील और स्केलेबल है। एक बार जब एक्सएमएल डेटा लोड किया जाता है यह जो कुछ भी फैशन में एक सरणी को सौंपा जाना चाहिए आपको पसंद है। कारण यह है कि हमें इस स्थिति में एक सरणी का उपयोग करना चाहिए, बल्कि एक्सएमएल ऑब्जेक्ट का उपयोग करना, जो अनिवार्य रूप से एक सरणी है, क्योंकि आपको ऑब्जेक्ट चौड़ाई को जानने की आवश्यकता है ताकि आप अगली ऑब्जेक्ट्स एक्स स्थिति को बंद कर सकें आखिरी ऑब्जेक्ट्स एक्स पोजीशन प्लस इसके विदर।

एक्सएमएल के साथ एक लूप का उपयोग करना आम है और केवल "x" मात्रा के माध्यम से इसे फिर से चालू करना है। हम इस मामले में यह नहीं चाहते हैं। "WIDTH" प्राप्त करने के लिए। लोड की गई संपत्ति की संपत्ति, लोडर के दौरान आग लगने वाले फ़ंक्शन के भीतर से इसे एक्सेस किया जाना चाहिए आग घटना। कॉम्प्लेटी। एक बार छवि पूर्ण हो जाने पर यह आइटम को सरणी से हटा देगा, एक वैरिएबल को lastX और lastWidth के रूप में सेट करें, और उसके बाद अगला आइटम सरणी में प्राप्त करें और पूरी तरह से प्रारंभ करें। आखिर में सरणी खाली है और प्रक्रिया पूरी हो गई है।

-नोट: मैं एक्सएमएल लोड करना छोड़ दूंगा और केवल डेटा को सरणी में इंजेक्ट कर दूंगा।

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Loader; 
    import flash.net.URLRequest; 

    public class DocumentClass extends Sprite 
    { 
     private var _array:Array; 
     private var _lastX:Number; 
     private var _lastWidth:Number; 

     public function DocumentClass():void 
     { 
      _array = new Array(); 
      //Add Items to an array however you wish. I did it 
      //this way to make it easier to read on this site. 

      _array.push({name: "image1", path: "path/to/image1"}); 
      _array.push({name: "image2", path: "path/to/image2"}); 
      _array.push({name: "image3", path: "path/to/image3"}); 

      loadImage(); 
     } 
     private function loadImage():void 
     { 
      if(_array.length > 0) 
      { 
       var loader:Loader = new Loader(); 
       addChild(loader); 

       var request:URLRequest = new URLRequest(_array[0].path); //Loads first item in the array each time. 
       loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded); 
       loader.x = _lastX + _lastWidth; 
       laoder.load(request); 

       _lastX = loader.x; //We set after so we are ready for the next. 

       _array.shift(); //Remove the first item from the array. 
      } 
     } 
     function onImageLoaded(e:Event):void 
     { 
      _lastWidth = e.target.width; 
      loadImage(); //Attempt to load another image if the array isn't empty. 
     } 
    } 
} 

मुझे आशा है कि इससे मदद मिलेगी, कोड का परीक्षण नहीं किया गया है, लेकिन अवधारणा मान्य है।

12

आप बिटमैप की चौड़ाई नहीं पता कर सकते जब तक यह वास्तव में भरी हुई है:

function LoadImage(q) 
{ 
    var imageLoader:Loader = new Loader(); 
    var image:URLRequest = new URLRequest("GalleryImages/Album1/"+q+".jpg"); 
    imageLoader.contentLoader.addEventListener(Event.COMPLETE, ImageLoaded); 
    imageLoader.load(image); 
    addChild (imageLoader); 
    ... 


private function ImageLoaded(e:Event):void 
{ 
    var imageLoader:Loader = Loader(e.target.loader); 
    var bm:Bitmap = Bitmap(imageLoader.content); 
    var CurrentXLength = bm.width; 
    .... 

Alternativly this link उपयोगी हो सकता है? मैंने इसे आजमाया नहीं है ...

+0

धन्यवाद, यह मदद की , हालांकि मुझे लगता है कि कोड 'content_loader.contentLoaderInfo.addEventListener (Event.CO' और' imageLoader.contentLoader' नहीं है ... –

0

हाँ मैंने स्कॉट के जवाब का उपयोग किया लेकिन यह ध्यान देने योग्य है कि 'ImageLoader.contentLoader' LoadImage() फ़ंक्शन में 'imageLoader.contentLoaderInfo' होना चाहिए। माँग

2

मैं सिर्फ लोडर वस्तु के डी चौड़ाई संपत्ति के लिए कहा me-- धन्यवाद के लिए चौड़ाई समस्या हल:

var loader:Loader; 

function loadImage(dir:String):void { 
    loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, placeImage); 
    var urlReq:URLRequest = new URLRequest(direccion); 
    loader.load(urlReq); 
} 

function placeImage(o:Event):void { 
    loader.x = (1360 - loader.width)/2; 
    loader.y = (768 - loader.height)/2; 
    addChild(loader); 
} 

कहाँ 1360 और 768 कैनवास आयाम हैं ...