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

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

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

Регистрация: Dec 2009
Сообщений: 29
По умолчанию Задача: Сделать анимацию сортировки пузырьком.

Я пробовал ее решить, но почему-то сначала делается весь цикл, а потом уже анимация.(
Создаю массив и дублирую мувиклипы, расставляя на свои места
Код AS1/AS2:
on (press) {
	delete (onEnterFrame);
	clear();
	listbox.removeAll();
	var m, i, j, n, a, b:int;
	n = parseInt(textn.text);
	a = parseInt(texta.text);
	b = parseInt(textb.text);
	var mas = array(n+1);
	if (dupl == 0) {
		for (j=1; j<(mas.length); j++) {
			duplicateMovieClip(_root.a1, "a"+j, j);
			dupl = 1;
		}
	}
	for (j=1; j<(mas.length); j++) {
		this["a"+j]._x = 50+60*j;
	}
	for (j=1; j<(mas.length); j++) {
		mas[j] = random(b-a+1)+a;
		listbox.addItem(mas[j]);
		this["text"+j].text = mas[j];
		this["a"+j]["bar"]._height = mas[j];
		this["a"+j]["txt"].text = mas[j];
	}
}
непостредственно сортировка по нажатию клавиши

Код AS1/AS2:
on (press) {
	var x0 = 0;
	clear();
	listbox.removeAll();
	for (i=1; i<=n; i += 1) {
		for (j=n; j>=i; j -= 1) {
			x0 = this["a"+(j)]._x;
			if (mas[j-1]>mas[j]) {
				onEnterFrame = function () {
					if (this["a"+(j-1)]._x<>x0) {
						this["a"+(j)]._x -= 2;
						this["a"+(j-1)]._x += 2;
					} else {
						delete (onEnterFrame);
					}
				};
				c = mas[j-1];
				mas[j-1] = mas[j];
				mas[j] = c;
			}
		}
	}
	for (i=1; i<=n; i += 1) {
		listbox.addItem(mas[i]);
	}
}
не могу понять сам принцип роботы и как можна все это организовать

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

Регистрация: Sep 2002
Сообщений: 30,784
Это не код, а клинопись. Что такое ссылка на объект, автору неизвестно. Не говоря уже о том, что зачем-то переобъявляется onEnterFrame 100500 раз.

Старый 08.01.2010, 15:58
Talaf вне форума Посмотреть профиль Отправить личное сообщение для Talaf Найти все сообщения от Talaf
  № 3  
Ответить с цитированием
Talaf

Регистрация: Dec 2009
Сообщений: 29
А вы бы не могли бы мне помочь разобраться? А не тупо сказать, что код не хороший. у меня времени не было изучать флеш с азов. За помощь буду благодарен.

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

Регистрация: Sep 2002
Сообщений: 30,784
Вы думаете, что если у вас не было времени на изучение, то оно вдруг появится у меня на изучение вашей клинописи?

Старый 08.01.2010, 16:11
Talaf вне форума Посмотреть профиль Отправить личное сообщение для Talaf Найти все сообщения от Talaf
  № 5  
Ответить с цитированием
Talaf

Регистрация: Dec 2009
Сообщений: 29
Почему это "Клинопись"? Я могу объяснить что вообще происходит. Или дайте свою идею о том, как можна организовать анимацию сортировки масива методом пузырька. Буду благодарен. Спасибо.

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

Регистрация: Sep 2002
Сообщений: 30,784
Клинопись потому что вы 100500 раз копируете «this["a"+(j)]» в коде.
Сортировку пузырьком смотри в википедии.

Старый 08.01.2010, 16:22
Talaf вне форума Посмотреть профиль Отправить личное сообщение для Talaf Найти все сообщения от Talaf
  № 7  
Ответить с цитированием
Talaf

Регистрация: Dec 2009
Сообщений: 29
Мне именно нужна программная анимация сортировки.

Для этого я создалю разного размера мувиклипы (в зависимости от велечены значения в массиве) для наглядности сортировки.

И создаю анимацию передвижения этих вот мувиклипов. Но у меня к сожалению ничего не получается. ИМЕННО АНИМАЦИЯ.

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

Регистрация: Sep 2002
Сообщений: 30,784
Ну так повесьте на каждый клип по своему собственному onEnterFrame, хотя бы.

Старый 08.01.2010, 16:27
Talaf вне форума Посмотреть профиль Отправить личное сообщение для Talaf Найти все сообщения от Talaf
  № 9  
Ответить с цитированием
Talaf

Регистрация: Dec 2009
Сообщений: 29
this["a"+(j)] - я обращаюсь к мувиклипам. Их именна соответственно а1, а2...ан

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

Регистрация: Sep 2002
Сообщений: 30,784
Я понимаю, что обращаетесь к мувиклипам. Но вместо того, чтобы выделить ссылку на текущий мувиклип, вы хреначите копипастом это самое «this["a"+(j)]» в каждой строчке кода, увеличивая его безумность в геометрической прогрессии.

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

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

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


 


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


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