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

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

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

Регистрация: Aug 2012
Сообщений: 297
По умолчанию Прозрачность изменяется только один раз

Здравствуйте.
Есть такая программа: На сцене находится стол на котором имеется 12 ячеек. Сверху и снизу стола находится по стопке карт (союзника и противника). Когда я беру карту мышкой и вожу ею над ячейками происходит определение над какой именно ячейкой находится карта и у этой ячейки изменяется прозрачность, когда я убираю карту с этой ячейки, то прозрачность становится исходной (допустим сначала было 05 процентов, потом стало 1).

Проблема: После того как я поводил картой над ячейками, я возвращаю карту в исходное место (опускаю под стол) и беру следующую карту, так же вожу её над ячейками — изменяется прозрачность, опускаю под стол. Но вот когда я беру предыдущую карту и ввожу над ячейками, то прозрачность не изменяется, хотя определение того, что над ячейками находится карта происходит.

Код AS3:
package src {
 
	public class Ally
	{
 
		public function Ally()
		{
			trace("Класс хождения союзника запущен");
		}
 
		//Этот метод позволяет брать карты, которые считаются картами союзника и находятся вне стола.
		public function takeCard(takeCard:MovieClip):void
		{
			var cardsLength:int = Settings.cards.length
 
			for(var take:int = 0; take < cardsLength; take++)
			{
				var picture:MovieClip = Settings.cards[take].getPicture();
 
				if(picture == takeCard)
				{
					var ally:Boolean = Settings.cards[take].ally;
					var table:Boolean = Settings.cards[take].table;
 
					if(!table)
					{
						if(ally)
						{
							picture.startDrag();
							picture.addEventListener(Event.ENTER_FRAME, transparencySituation);
							break;
						}
					}
				}
			}
		}
		//Этот метод проверяет над какой ячейкой (место на столе, куда ставится карта) находится взятый объект и изменяет прозрачность этой ячейки.
		private function transparencySituation(event:Event):void
		{
			var card:MovieClip = MovieClip(event.target);
 
			var cX:Number = card.x;
			var cY:Number = card.y;
			var cW:Number = card.width;
			var cH:Number = card.height;
 
			var situationLength:int = Settings.situations.length;
 
			for(var transparency:int = 0; transparency < situationLength; transparency++)
			{
				var situation:MovieClip = Settings.situations[transparency].getPicture();
				var sX:Number = situation.x;
				var sY:Number = situation.y;
				var sW:Number = situation.width;
				var sH:Number = situation.height;
 
				if(cX + cW > sX && cX < sX && cY + cH > sY && cY < sY)
				{
					situation.alpha = Settings.takeAlphaSituation;
				}
				else
				{
					situation.alpha = Settings.releaseAlphaSituation;
				}
			}
		}
 
	}
 
}
Добавлено через 2 часа 28 минут
Проблему решил. Оказалось, что удаление события происходило не всегда и каждый раз "трогая" всё новую и новую карту я добавлял событие — каждое событие проверяло соответствие координат со своей картой и поэтому не у всех карт изменялась прозрачность. Просто удаление события было только у тех карт, которые оставались в ячейке.

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

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

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


 


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


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