В настоящее время я использую следующую функцию для загрузки изображения, однако я не мог понять, как найти ширину загруженного изображения, которую я собираюсь использовать перед размещением следующего изображения с использованием той же функции.
Обратите внимание, что q - это переменная (число), которая используется для загрузки различных изображений.
= X Мне нужна помощь в получении ширины загруженного изображения ...
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)
}





Чтобы получить доступ к ширине, вы должны сделать это в функции, назначенной для обработки Event.COMPLETE.
«Вам понадобится массив, содержащий элементы, которые вы хотите загрузить. Вероятно, вам следует загрузить эти данные с помощью XML, чтобы они были динамическими и масштабируемыми. После загрузки XML-данных они должны быть назначены массиву любым способом. Причина, по которой мы должны использовать в этой ситуации массив, а не просто использовать объект XML, который по сути является массивом, заключается в том, что вам нужно знать ширину объекта, чтобы вы могли основывать позицию следующих объектов X на основе последних объектов X позиция плюс ее ШИРИНА.
В XML обычно используется цикл for и просто повторяется "x" раз. В данном случае мы этого не хотим. Чтобы получить свойство «WIDTH» загруженного актива, к нему необходимо получить доступ из функции, назначенной для срабатывания, когда загрузчик запускает Event.COMPLETE. Как только изображение будет завершено, оно удалит элемент из массива, установит переменную для lastX и lastWidth, а затем получит следующий элемент в массиве и начнёт все сначала. В конце концов массив становится пустым, и процесс завершается.
-Примечание: я пропущу загрузку XML и просто вставлю данные в массив самостоятельно.
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.
}
}
}
Надеюсь, это поможет, код не тестировался, но концепция кажется верной.
Вы не можете узнать ширину растрового изображения, пока оно не загрузится:
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;
....
В качестве альтернативы может оказаться полезным эта ссылка? Сам не пробовал ...
Да, я использовал ответ Скотта, но стоит отметить, что imageLoader.contentLoader должен быть imageLoader.contentLoaderInfo в функции LoadImage (). Решил проблему ширины для меня - спасибо, манг
Я просто попросил указать свойство ширины объекта загрузчика:
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 - размеры холста ...
Спасибо, это помогло, хотя я думаю, что это код
content_loader.contentLoaderInfo.addEventListener(Event.CO, а неimageLoader.contentLoader...