![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Прошу помощи. Чет никак врубиться не могу.
Есть у меня такой код: var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success:Boolean) {
if (success) {
var total = my_xml.firstChild.childNodes.length;
for (var i=0; i<total; i++) {
var container:MovieClip = _root.createEmptyMovieClip("cont"+i+"_mc", i);
var image:MovieClip = container.createEmptyMovieClip("image"+i+"_mc", 1);
image.loadMovie(my_xml.firstChild.childNodes[i].attributes.small);
container._x = eval("cont"+(i-1)+"_mc")._x+150;
container._y = Stage.height/2 - (113/2);
container.onEnterFrame = mover;
container.onRollOver = bigger;
container.onRollOut = smaller;
}
}
}
function mover() {
if (_root._xmouse > Stage.width/2) {
this._x += speed;
}
if (_root._xmouse < Stage.width/2) {
this._x -= speed;
}
}
function bigger() {
this._width = 160;
this._height = 123;
this.swapDepths(100);
this._x -= 5;
this._y -= 5;
}
function smaller() {
this._width = 150;
this._height = 113;
this.swapDepths(100);
this._x += 5;
this._y += 5;
}
my_xml.load("images.xml");
|
|
|||||
|
Для этого надо изменить функцию mover() так, что бы картинки, которые ушли вправо, выезжали слева, и наоборот. (Меняется _x) Можно и не mover менять, конечно, но мне кажется, так проще будет.
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Только как это сделать? Дело в том, что у меня в галлерею грузится 10 картинок (вообще может будет и больше, ограничения быть не должно). И соответственно не понятно какой _x ставить? Умножать кол-во картинок на ширину картинки? Хм... надо попробовать
Не получилось ничего, может я неправильно условие пишу или чего не догоняю? Код функции mover(): function mover() {
if (_xmouse >= 150) {
if (this._x+150 < 0) {
this._x = this.tot*150;
}
this._x +=10;
}
if (_xmouse <= Stage.width-150) {
this._x -=10;
}
}
Все равно неправильно работает ![]() Попробуйте подвигать картинки туда-сюда... Последний раз редактировалось iNils; 18.02.2008 в 21:02. |
|
|||||
|
Регистрация: Dec 2007
Адрес: НСО
Сообщений: 91
|
думаю функция мувер глючит. надо обращаться к каждому элементу по i числу. пробуйте трейсить.
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Переписал так:
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
var speed:Number = 5;
my_xml.onLoad = function(success:Boolean) {
if (success) {
var total = my_xml.firstChild.childNodes.length;
for (var i=0; i<total; i++) {
var container:MovieClip = _root.createEmptyMovieClip("cont"+i+"_mc", i);
var image:MovieClip = container.createEmptyMovieClip("image"+i+"_mc", 1);
image.loadMovie(my_xml.firstChild.childNodes[i].attributes.small);
container._x = eval("cont"+(i-1)+"_mc")._x+150;
container._y = Stage.height/2 - (113/2);
container.tot = total;
container.num = i;
container.onEnterFrame = mover;
container.onRollOver = bigger;
container.onRollOut = smaller;
}
}
}
function mover() {
if (_xmouse <= Stage.width-150) {
if (eval("cont"+this.num+"_mc")._x+150 < 0) {
eval("cont"+this.num+"_mc")._x = (this.tot-1)*150;
}
eval("cont"+this.num+"_mc")._x -=10;
}
if (_xmouse >= 150) {
if (eval("cont"+this.num+"_mc")._x > Stage.width) {
eval("cont"+this.num+"_mc")._x = -150;
}
eval("cont"+this.num+"_mc")._x +=10;
}
}
Не понял что трейсить? При trace(this); выдает: level0.cont9_mc level0.cont8_mc level0.cont7_mc level0.cont6_mc level0.cont5_mc level0.cont4_mc level0.cont3_mc level0.cont2_mc level0.cont1_mc level0.cont0_mc по идее все клипы на месте. Они почему-то как бы накладываются один на другой. Я не понимаю почему... Жду помощи. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
«eval("cont"+(i-1)+"_mc")» — что это? _root["cont"+(i-1)+"_mc"] чем не угодил?
Да и потом, на первой итерации у вас вообще нет предыдущего контейнера. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Переписал с учетом ваших советов
my_xml.onLoad = function(success:Boolean) {
if (success) {
var total = my_xml.firstChild.childNodes.length;
for (var i=0; i<total; i++) {
var container:MovieClip = _root.createEmptyMovieClip("cont"+i+"_mc", i);
var image:MovieClip = container.createEmptyMovieClip("image"+i+"_mc", 1);
image.loadMovie(my_xml.firstChild.childNodes[i].attributes.small);
if (i > 0) {
container._x = _root["cont"+(i-1)+"_mc"]._x+150;
} else {
container._x = 0;
}
container._y = Stage.height/2 - (113/2);
container.tot = total;
container.onEnterFrame = mover;
container.onRollOver = bigger;
container.onRollOut = smaller;
}
}
}
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 10
|
Попробуй изменить функцию mover так:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 118
|
Satin Спасибо огромное работает отлично! А я блин всю голову сломал... Эх не хватает мне еще соображалки...
Спасибо еще раз! |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|