![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
Добрый день!
Делаю функцию для загрузки картинок. Ширину загружаемых картинок определяю внутри onLoadInit, но там не получается вывести весь ряд итераций (? не уверена в термине - последовательность всех чисел, перебираемых циклом). Получается, что у меня ширина каждой картинки известна только внутри onLoadInit, а номер ее клипа - только снаружи. Наверняка есть решение, и для профессионала оно простое... Заранее благодарна за подсказку. var n:Number = 9;
function loadSmallImages():Void {
for (i=1; i<n+1; i++) {
_root.createEmptyMovieClip("smClip"+i, i);
var clipsOfSmalls = _root["smClip"+i];
//выводит последовательно i (1,2,3,4,5,6,7,8,9)
//trace(i);
var loaderSmalls:MovieClipLoader = new MovieClipLoader();
var listenerSmalls:Object = {};
loaderSmalls.addListener(listenerSmalls);
loaderSmalls.loadClip("img/object3/photo/sm/00"+i+".jpg", i);
listenerSmalls.onLoadInit = function(clipsOfSmalls :MovieClip) {
//выводит правильную ширину картинок
//trace(clipsOfSmalls._width);
//выводит n раз n+1 (в данном случае 9 раз по 10)
trace(i);
}
listenerSmalls.onLoadComplete = function():Void {
delete loaderSmalls, delete listenerSmalls;
};
//выводит последовательно i (1,2,3,4,5,6,7,8,9)
//trace(i);
//а надо, чтобы он это же вывел внутри onLoadInit
};
};
loadSmallImages();
Последний раз редактировалось jut'; 11.01.2006 в 15:27. |
|
|||||
|
как вариант: дать листенеру идентификатор..
|
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
о, silin, огромное спасибо!
|
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Спасибо вам, что соблюдаете правила форума
|
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
Antares, спасибо, теперь буду стараться оправдать...
Какое-то время думала, новый это вопрос или тот же, но считаю, что скорее почти тот же, не стоит дважды код повторять проблема в том, что переменная цикла, становясь свойством объекта, выводится в обратном порядке, обратить ее у меня не получается попытки использовать массив и сделать ему reverse() результата не дали, т.к. массив, который создается в цикле, непростой (о его особенностях наверное лучше второй вопрос задавать?). честно билась, придумать решение пока не могу for (var i=1; i<n+1; i++) {
//здесь trace выводит правильную последовательность 1,2,3,4...
.......
var listenerSmalls:Object = {id:i};
......
listenerSmalls.onLoadInit = function(clipsFromMassivOfSmalls:MovieClip) {
trace(this.id);
//выводит обратную последовательность ...4,3,2,1
......
![]() Последний раз редактировалось jut'; 08.01.2006 в 22:17. |
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
да, спасибо, про порядок загрузки не подумала
|
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
Сдаюсь и прошу человеческой помощи. Ничего не получается, плохо понимаю массивы...
Не удается получить номер предшествующего клипа массива, переданного onLoadInit в виде переменной (если я правильно понимаю проблему) var arrOfWidths:Array = [];
var arrOfClips:Array = [];
//начало функции загрузки
function loadSmallImages():Void {
for (var i=1; i<n+1; i++) {
_root.createEmptyMovieClip("smClip"+i+"_mc", i);
//arrOfClips присваивается ряд созданных клипов
arrOfClips[i] = _root["smClip"+i+"_mc"];
...
var listenerSmalls:Object = {id:i};
...
//arrOfClips задано как аргумент ф-ции инициализации загрузки
listenerSmalls.onLoadInit = function(arrOfClips:MovieClip) {
arrOfWidths[this.id] = arrOfClips._width;
//как их получить?
arrOfClips._x = (координаты предшествующего клипа) + (ширина предшествующего клипа);
}
for (var i=0; i<n; i++) {
_root.attachMovie("obj"+i, "obj"+i+"_mc", i);
_root["obj"+i+"_mc"]._x = _root["obj"+(i-1)+"_mc"]._x + _root["obj"+(i-1)+"_mc"]._width + 10;
_root["obj"+i+"_mc"]._y = 10;
}
столкните с мертвой точки... Последний раз редактировалось jut'; 09.01.2006 в 18:26. |
|
|||||
|
(координаты предшествующего клипа) + (ширина предшествующего клипа);
ты не можешь однозначно их знать, пока не загрузятся все, вариант: дождаться загрузки всех, а уж потом все расставлять по местам.. например var clips= [];
var nPics=3,toLoad=3;
onLoadAll=function(){
for(var i=0;i<3;i++) trace(i+' : width='+clips[i]._width);
}
for(var i=0;i<nPics;i++){
clips[i]=_root.createEmptyMovieClip(i, i);
var l= {};
var ml:MovieClipLoader = new MovieClipLoader();
ml.addListener(l);
l.onLoadInit = function(){
if(!--toLoad)onLoadAll();
}
ml.loadClip(i+".jpg",clips[i]);
}
|
|
|||||
|
Регистрация: Apr 2004
Сообщений: 27
|
ох-ох-ох!!!
спасибо тебе огромное! получилось запустила внутри onLoadAll функцию расстановки по местам и все срослось... Последний раз редактировалось jut'; 09.01.2006 в 19:17. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|