Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.02.2008, 17:15
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 1  
Ответить с цитированием
GreatRash

Регистрация: Jun 2007
Сообщений: 118
Cool Помогите сделать движение в галерее

Прошу помощи. Чет никак врубиться не могу.
Есть у меня такой код:
Код:
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");
А как сделать чтобы движение происходило бесконечно? Т.е. чтобы лента из картинок была бесконечна?

Старый 15.02.2008, 09:47
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 2  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
Для этого надо изменить функцию mover() так, что бы картинки, которые ушли вправо, выезжали слева, и наоборот. (Меняется _x) Можно и не mover менять, конечно, но мне кажется, так проще будет.
__________________
"We Are The Champions My Friends!" Queen

Старый 15.02.2008, 13:29
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 3  
Ответить с цитированием
GreatRash

Регистрация: 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;
	}
}
Ой не, я наврал... все получилось. Я просто неправильно условие написал

Все равно неправильно работает
Попробуйте подвигать картинки туда-сюда...
Вложения
Тип файла: rar gallery.part1.rar (250.0 Кб, 89 просмотров)
Тип файла: rar gallery.part2.rar (159.5 Кб, 79 просмотров)


Последний раз редактировалось iNils; 18.02.2008 в 21:02.
Старый 18.02.2008, 13:47
Valterrio вне форума Посмотреть профиль Отправить личное сообщение для Valterrio Найти все сообщения от Valterrio
  № 4  
Ответить с цитированием
Valterrio

Регистрация: Dec 2007
Адрес: НСО
Сообщений: 91
думаю функция мувер глючит. надо обращаться к каждому элементу по i числу. пробуйте трейсить.

Старый 18.02.2008, 14:57
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 5  
Ответить с цитированием
GreatRash

Регистрация: 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
по идее все клипы на месте.
Они почему-то как бы накладываются один на другой. Я не понимаю почему...
Жду помощи.

Старый 18.02.2008, 15:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
«eval("cont"+(i-1)+"_mc")» — что это? _root["cont"+(i-1)+"_mc"] чем не угодил?
Да и потом, на первой итерации у вас вообще нет предыдущего контейнера.

Старый 18.02.2008, 15:38
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 7  
Ответить с цитированием
GreatRash

Регистрация: 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;
		}
	}
}
Только, к сожалению, ничего не изменилось...

Старый 20.02.2008, 11:38
Satin вне форума Посмотреть профиль Отправить личное сообщение для Satin Найти все сообщения от Satin
  № 8  
Ответить с цитированием
Satin

Регистрация: Jun 2007
Сообщений: 10
Попробуй изменить функцию mover так:
Код:
function mover() {
	if (_xmouse <= Stage.width-150) {
		if (this._x==(-1)*this._width ) {
			this._x = (this.tot-1)*this._width;
		}
		this._x -=5;
	}
	if (_xmouse >= 150) {
		if (this._x == (this.tot-1)*this._width) {
			this._x = (-1)*this._width;
		}
		this._x +=5;
	}
}

Старый 20.02.2008, 14:25
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 9  
Ответить с цитированием
GreatRash

Регистрация: Jun 2007
Сообщений: 118
Satin Спасибо огромное работает отлично! А я блин всю голову сломал... Эх не хватает мне еще соображалки...
Спасибо еще раз!

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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