Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите найти ошибку (http://www.flasher.ru/forum/showthread.php?t=109679)

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

В этот примере показана последовательная подгрузка.

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

Также как и тут

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

Цитата:

Сообщение от IamZuBila16
Вроде бы все правильно.. но увелечение все-равно не работает.

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

Код:

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

Очень-очень Вам благодарен! Огромное спасибо!


Часовой пояс GMT +4, время: 22:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.