PDA

Просмотр полной версии : Помогите найти ошибку


IamZuBila16
18.03.2008, 21:14
Зравствуйте, уважаемы Флешеры!
Помогите пожалуйста найти ошибку в таком несложно скрипте:

stop();
this.onLoad=function(){
for(var i:Number=1; i>8; i++){
_root.createEmptyMovieClip("foto"+i, root);
_root.foto[i].loadMovie(i+"opt.jpg");
_root.foto[i]._x=i*40;
_root.foto[i]._y=30;
_root.foto[i]._xscale=50;
_root.foto[i]._yscale=50;
}
}


Заранее благодарен.:umnik2:

iNils
18.03.2008, 21:22
1. Забудьте про onLoad. Кроме как в классах он нигде не нужен. А в кадрах работает только в руте. Это когда писали код на кнопках или клипах нужно было использовать onClipEvent (load), так как просто написать код было нельзя.
2. for(var i:Number=1; i>8; i++){данный цикл сразу же и закончится.
3._root.createEmptyMovieClip("foto"+i, root);что есть root без _?

IamZuBila16
18.03.2008, 21:37
По сути, мне нужно загрузить 8 картинок. Каждую в отдельный мувиклип. Не могли бы Вы подправить выложеный мною выше код, чтоб он выполнял нужную мне функцию.
Заранее блангодарен.

iNils
18.03.2008, 21:56
stop ();
for (var i:Number = 1; i < 8; i++) {
var mc:MovieClip = _root.createEmptyMovieClip ("foto" + i, _root.getNextHighestDepth ());
mc.loadMovie (i + "opt.jpg");
mc._x = i * 40;
mc._y = 30;
mc._xscale = 50;
mc._yscale = 50;
}

IamZuBila16
18.03.2008, 22:35
Большое спасибо!

IamZuBila16
19.03.2008, 10:54
Продолжение..(
Подскажите пожалуйста еще одну мелочь.. Что нужно дописать в код, чтоб при наведении на каждую картинку она немного увеличивалась?
Заранее благодарен.

DimasMain
19.03.2008, 10:59
Допишите в цикле


mc.onRollOver = function(){
this._xscale = 70;
this._yscale = 70;
}
mc.onRollOut = function(){
this._xscale = 50;
this._yscale = 50;
}

IamZuBila16
19.03.2008, 11:02
не помогло((

crazyone
19.03.2008, 11:50
Вы в цикл дописали?

IamZuBila16
19.03.2008, 14:28
да, в цикл..
получилось вот что:

stop ();
for (var i:Number = 1; i < 8; i++) {
var mc:MovieClip = _root.createEmptyMovieClip ("foto" + i, _root.getNextHighestDepth ());
mc.loadMovie (i + "opt.jpg");
mc._x = i * 40;
mc._y = 30;
mc._xscale = 50;
mc._yscale = 50;
mc.onRollOver = function(){
this._xscale = 70;
this._yscale = 70;
}
mc.onRollOut = function(){
this._xscale = 50;
this._yscale = 50;
}
}

iNils
19.03.2008, 19:17
Загрузка происходит асинхронно выполнению кода. До полного окончания загрузки и инициализации клипа, какой либо код к нему цеплять бесполезно.
Загружать надо с помощью класса MovieClipLoader, а код цеплять после события onLoadInit.
Воспользуйтесь поиском, там достаточно примеров.

IamZuBila16
19.03.2008, 20:04
Исправил код таким образом:

var ml:MovieClipLoader = new MovieClipLoader();
var ls:Object = new Object();
for(var i:Number = 1; i < 9; i++){
obj_mc.createEmptyMovieClip("foto"+i, obj_mc.getNextHighestDepth());
ml.loadClip(_global[i+"opt"], obj_mc["foto"+i]);
}
ls.onLoadInit = function(mc:MovieClip){
var x:Number = mc._x;
var y:Number = mc._y;
mc._x = (i * 60)-10;
mc._y = 5;
mc._xscale = 15;
mc._yscale = 15;
mc.onRollOver = function(){
mc._xscale = 30;
mc._yscale = 30;
}
mc.onRollOut = function(){
mc._xscale = 15;
mc._yscale = 15;;
}
ml.addListener(ls);
}


но теперь картинки вобще не грузятся.. подскажите пожалуйста почему.
Заранее благодарен за ответ.

divinus
19.03.2008, 20:30
в вашем коде много непонятного, но может вот так?

var ml:MovieClipLoader = new MovieClipLoader();
var ls:Object = new Object();
obj_mc = this.createEmptyMovieClip("obj_mc", 1);
for (var i:Number = 1; i<9; i++) {
obj_mc.createEmptyMovieClip("foto"+i, i);
ml.loadClip(_global[i+"opt"], obj_mc["foto"+i]);
}
ml.addListener(ls);
ls.onLoadInit = function(mc:MovieClip) {
var x:Number = mc._x;
var y:Number = mc._y;
mc._x = (i*60)-10;
mc._y = 5;
mc._xscale = 15;
mc._yscale = 15;
mc.onRollOver = function() {
mc._xscale = 30;
mc._yscale = 30;
};
mc.onRollOut = function() {
mc._xscale = 15;
mc._yscale = 15;

};
ml.addListener(ls);
};

IamZuBila16
19.03.2008, 20:38
нет, не получится.. т.к. от добавления нескольких слов "var" ничего не изменится..

iNils
19.03.2008, 20:39
В этот примере (http://www.flasher.ru/forum/attachment.php?attachmentid=19039&d=1205380628) показана последовательная подгрузка.

divinus
19.03.2008, 20:45
IamZuBila16, каких "var"?
в примере вашего кода movieClipLoader не слушается никем это раз,
obj_mc - непонятно что за клип это два,
и очень сомнительные ссылки через _global это три...

IamZuBila16
19.03.2008, 20:46
Спасибо, с закрузкой картинок я вроде бы уже справлися.. Подскажите плз, как сделать их увелечение при наведении..

var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);
var i:Number = 1;
var rootName:String = "opt";
var endName:String = ".jpg";
var mcOld:MovieClip = null;
this.onLoadInit = function () {
var mc:MovieClip = this.createEmptyMovieClip (i+"opt", _root.getNextHighestDepth());
mc._x = ((mcOld._x + mcOld._width) || 0) + 10;
mc._y = 10;
mc._xscale=15;
mc._yscale=15;
mcl.loadClip (i + rootName + endName, mc);
mcOld = mc;
i++;
};
this.onLoadInit ();

iNils
19.03.2008, 20:51
Также как и тут (http://www.flasher.ru/forum/showpost.php?p=726263&postcount=13)

IamZuBila16
19.03.2008, 20:58
вот мой код.


var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);

var i:Number = 1;

var rootName:String = "opt";

var endName:String = ".jpg";
var mcOld:MovieClip = null;
this.onLoadInit = function () {
var mc:MovieClip = this.createEmptyMovieClip (i+"opt", _root.getNextHighestDepth());
mc._x = ((mcOld._x + mcOld._width) || 0) + 10;
mc._y = 10;
mc._xscale=15;
mc._yscale=15;
mcl.loadClip (i + rootName + endName, mc);
mcOld = mc;
i++;
mc.onRollOver = function() {
mc._xscale = 30;
mc._yscale = 30;
};
mc.onRollOut = function() {
mc._xscale = 15;
mc._yscale = 15;

};
}
this.onLoadInit ();


Вроде бы все правильно.. но увелечение все-равно не работает.
Помогите пожалуйста. Очень хочу закончить с этим сегодня.
Заранее благодарен.. (особенно iNils;))

iNils
19.03.2008, 21:21
Вроде бы все правильно.. но увелечение все-равно не работает.С какой стати? Вы тупо копируете код думая, что раз вам дают ссылку на пример, значит там именно ваша задача. Пример на то и пример, что бы его разобрать, понять и применить к своему коду, а не скопировать строки кода. А вам даже, если и показать ошибки, то сами исправить не можете, ка это было в первых постах данной темы.
На форумах УЧАТ и подталкивают в нужных направлениях, а не делают за вас.
Лично вам, я последний раз пишу готовый код. И писать мне в личку с просьбой помочь - не надо. Я сам хочу выбирать когда помогать, а когда нет.

var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);
var maxFile:Number = 9;
var i:Number = 1;
var rootName:String = "opt";
var endName:String = ".jpg";
var mcOld:MovieClip = null;
this.onLoadInit = function (mc:MovieClip) {
if (mc) {
mc._x = ((mcOld._x + mcOld._width) || 0) + 10;
mc._y = 10;
mc._xscale = 15;
mc._yscale = 15;
mc.onRollOver = function () {
this._xscale = 30;
this._yscale = 30;
};
mc.onRollOut = function () {
this._xscale = 15;
this._yscale = 15;
};
mcOld = mc;
}
if (i < maxFile) {
mcl.loadClip (i + rootName + endName, this.createEmptyMovieClip (i + "opt", this.getNextHighestDepth ()));
i++;
}
};
this.onLoadInit ();

IamZuBila16
19.03.2008, 21:30
Очень-очень Вам благодарен! Огромное спасибо!