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

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

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

Регистрация: Sep 2011
Сообщений: 19
Question Как "запомнить" выбранный мувик ?

Доброго времени суток, Форумчане !

У меня такой вопрос. Как проще описать процедуру "запоминания" и прорисовки мувиклипа ?


Вот мои действия :

1. В первом кадре создаю три мувиклипа, называю их S1 (круг), S2 (квадрат), S3 (элипс). Там же в кадре пишу код проверки :

Код AS1/AS2:
stop();
// Выбираем нужный мувик и рисуем его в следующем кадре
onMouseDown = function():Void {
if (S1.hitTest(_root._xmouse, _root._ymouse))
{ 
gotoAndStop(2);
} 
if (S2.hitTest(_root._xmouse, _root._ymouse)) 
{  
gotoAndStop(3);
} 
if (S3.hitTest(_root._xmouse, _root._ymouse))
{ 
gotoAndStop(4);
} 
}
2. Во втором третьем и четвёртом кадре рисую выбранный мувик и выбираю второй мувик

Код AS1/AS2:
S = 1; // переменная для запоминания первого мувика
stop();
// Выбираем нужный мувик и рисуем его в следующем кадре
onMouseDown = function():Void {
if (S1.hitTest(_root._xmouse, _root._ymouse))
{ 
SS = 1; // переменная для запоминания второго мувика
gotoAndStop(5);
} 
if (S2.hitTest(_root._xmouse, _root._ymouse)) 
{ 
SS = 2; // переменная для запоминания второго мувика
gotoAndStop(5);
} 
if (S3.hitTest(_root._xmouse, _root._ymouse))
{ 
SS = 3; // переменная для запоминания второго мувика
gotoAndStop(5);
} 
}
3. В пятом кадре проверяю какие мувики выбраны, и, в зависимости от этого, рисую их с шестого по четырнадцатый кадр.

Код AS1/AS2:
// проверяем чему равен первый и второй мувик, и, в зависимости от этого,
// рисуем их
 
if (S == 1) // если первый мувик равен "кругу"
{ 	if (SS == 1) // и если второй мувик равен кругу то рисуем круг и круг
{ gotoAndStop(6); }
if (SS == 2) // и если второй мувик равен квадрату то рисуем круг и квадрат
{ gotoAndStop(7); }
if (SS == 3) // и если второй мувик равен элипсу то рисуем круг и элипс
{ gotoAndStop(8); }
} 
if (S == 2) // если первый мувик равен "квадрату"
{ 	if (SS == 1) // и если второй мувик равен кругу то рисуем квадрат и круг
{ gotoAndStop(9); }
if (SS == 2) // и если второй мувик равен квадрату то рисуем круг и квадрат
{ gotoAndStop(10); }
if (SS == 3) // и если второй мувик равен элипсу  то рисуем круг и элипс
{ gotoAndStop(11); }
} 
 
if (S == 3) // если первый мувик равен "элипсу"
{ 	if (SS == 1) // и если второй мувик равен кругу то рисуем элипс и круг
{ gotoAndStop(12); }
if (SS == 2) // и если второй мувик равен квадрату то рисуем элипс и квадрат
{ gotoAndStop(13); }
if (SS == 3) // и если второй мувик равен элипсу то рисуем круг и элипс
{ gotoAndStop(14); }
}
Получается что я горожу "большой огород", который растёт в геометрической прогрессии, а ведь ещё надо как то описывать и третий мувик ...
Как мне лучше справиться с этой проблемой ?
Буду признателен за любые идеи и мысли, исходник прилагаю.
Вложения
Тип файла: rar qwestion.rar (6.1 Кб, 29 просмотров)

Старый 13.09.2011, 13:30
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Опишите вкратце, чего вы имеете хотеть достигнуть?
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 13.09.2011, 13:50
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Избавьтесь от кода во многих кадрах. если уж пишите в кадрах - пишите ТОЛЬКО В ПЕРВОМ
__________________
Отряд Котовскага

Старый 13.09.2011, 13:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Отступы делайте табуляцией в функциях, условных операторах.. везде. Плохо код читается.

Что касается оптимизации кода, то имя мувика или ссылка на него может быть составным, с использованием переменных.
Например, в приближении к вашему случаю:

Код AS1/AS2:
this.onMouseDown = function  () 
{
	for (i = 1; i < 10; i++)
	{
		var mc:MovieClip = _root['s' + i];
		if (mc.hitTest(_root._xmouse, _root._ymouse))
		{
			....
			gotoAndStop(i + 1);
		}
	}
};
И прислушайтесь к предыдущим постам.
__________________
Идите первым!


Последний раз редактировалось mooncar; 13.09.2011 в 14:02.
Старый 14.09.2011, 04:41
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 5  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
Всем спасибо за посты

Цитата:
dark256
Опишите вкратце, чего вы имеете хотеть достигнуть?
В идеале хотелось бы извоять игру "Память". Т.е. есть поле 4х4 из 16ти карт, которые лежат "рубашкой" вверх и четыре разновидности картинок (например круг, квадрат, прямоугольник, элипс) Каждой карте рандомно присваевается одна из картинок. при нажатии на любую карту на поле она переворачивается и показывает свою картинку. При нажатии на вторую любую карту, она тоже переворачивается, и если картинки совпадают - карты удаляются, если не совпадают - карты "закрываются обратно" .(на всякий случай, для тех кто не понял, прикрепляю подобную игру от АртМедиа)

Цитата:
Котяра
Избавьтесь от кода во многих кадрах. если уж пишите в кадрах - пишите ТОЛЬКО В ПЕРВОМ
В том то и проблема =) Как бы это всё дело засунуть в первый кадр, и, по возможности, уменьшить число фреймов и вес самого исходника... Есть предположение, что можно например это всё реализовать при помощи цикла, который будет автоматически загонять данные в массив, и потом брать данные оттуда, но как это сделать ? - незнаю, так как ёще начинающий флешер .

Цитата:
mooncar
Отступы делайте табуляцией в функциях, условных операторах.. везде. Плохо код читается.
Спасибо, учту =)

Цитата:
mooncar
Что касается оптимизации кода, то имя мувика или ссылка на него может быть составным, с использованием переменных.
Например, в приближении к вашему случаю:
Да, кстати, то что нужно. Я хотел изначально сделать так, чтобы цикл задавал переменные мувикам, но не разобрался как это написать.

Жду ещё предложений.
Вложения
Тип файла: rar Memory.rar (401.5 Кб, 32 просмотров)

Старый 14.09.2011, 10:46
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Начните с того, что откажитесь от фреймов. Они тут и в аналогичных случаях не нужны. Фреймы во флеше использовать следует для анимации.
Пишите код в 1-м кадре, и все объекты тоже разместите в 1-м кадре и управляйте в определенные моменты их видимостью с помощью _alpha или _visible. Либо добавляйте из библиотеки с помощью attachMovie и удаляйте с помощью removeMovieClip,
__________________
Идите первым!

Старый 14.09.2011, 12:48
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 7  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
Цитата:
mooncar
Либо добавляйте из библиотеки с помощью attachMovie и удаляйте с помощью removeMovieClip,
А можно по подробнее с конкретным рабочим примером, если не сложно... Как это реализовать ?

Например если кликнуто по клипу - attachMovie на его позицию другой клип.... Если ещё раз кликнуто - removeMovieClip

Старый 14.09.2011, 13:30
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 8  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Генерите двумерный массив с картами. Допустим 10 на 10
Генерите на его основе 10 на 10 кнопок. В одном кадре.
Под каждую кладете клип-фигуру и делаете ему _visible = false
И все.

Клик по кнопке - показываем что там под ней скрыто - круг, квадрат али ишшо что.
Запомнили фигуру в переменной

var selectedFigure = 1..2

Кликаете по второй кнопке. Сравниваете тип лежащей там фигуры с открытой.
Далее либо оставляете открытыми фигуры, либо обе закрываете.

И никаких кадров.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 22.09.2011, 11:29
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 9  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
dark256, А можно пример на двух картах хотя бы ? А то я уже плотно погряз в создании массивов, присвоении видимости, и переменных... никак не могу дойти...

Старый 26.09.2011, 10:38
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 10  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
Может кто-нибудь ещё поделиться своим мнением ? Желательно с примером =)

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

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

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


 


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


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