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

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

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

Регистрация: Jun 2013
Сообщений: 22
По умолчанию нумерация ячеек сетки

Пытаюсь пронумеровать в цикле ячейки сетки и выравнить их относительно центра каждого из мувиклипов сетки.
Текст вставлен внутрь мувика с цифрой один. Название мувика mRect, а текста numText.
Не получается следущие моменты:
1)нумерация получается сверху вниз вместо справа налевоо.
2)при наведении мышки пропадает текст, хотя я по сути меняю только цвет квадрата мувиклипа.
Или как-то надо иначе прописывать глубину текста клипа?

http://gyazo.com/cfb34422a860de234a95efcee59ea402.png

вот мой код и исходник:

Код AS3:
import flash.events.Event;
import flash.filters.GlowFilter;
var itemCount:int=0;
for (var i:int = 0;i<5;i++){
	for (var j:int=0;j<5;j++){
		var mRect:cube = new cube();
		mRect.x =100+ i*45
		mRect.y =100+ j*45
		addChild(mRect)
		itemCount++;
 
		mRect.numText.text = itemCount.toString();
		var txtFormat:TextFormat = new TextFormat();
        txtFormat.align = TextFormatAlign.CENTER;
		mRect.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
        mRect.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
 
	}
}
 
stage.addEventListener(Event.ENTER_FRAME, loop)
 
function loop (e:Event):void {
	mText.text = "Xcor: " + mouseX.toString()+ " Ycor: "+ mouseY.toString()	
}
 
 
 
 
function onMouseOver (event:MouseEvent):void {
 
	var ct:ColorTransform = new ColorTransform();
	ct.color = 0x666666;
	event.target.transform.colorTransform = ct;
 
 
}
 
function onMouseOut (event:MouseEvent):void {
 
	var ct:ColorTransform = new ColorTransform();
	ct.color = 0x333333;
	event.target.transform.colorTransform = ct;
 
}


Последний раз редактировалось funkypanky; 16.06.2013 в 17:41.
Старый 16.06.2013, 18:07
Ёлочка вне форума Посмотреть профиль Отправить личное сообщение для Ёлочка Найти все сообщения от Ёлочка
  № 2  
Ответить с цитированием
Ёлочка
 
Аватар для Ёлочка

Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
1. Поменяй местами i и j.
Код AS3:
mRect.x =100+ j*45
mRect.y =100+ i*45
2. ColorTransform изменяет цвет и квадрата, и текста, поэтому текст никуда не пропадает, а просто сливается с квадратом. Создай внутри cube еще один мувиклип для фона, пропиши ему имя и работай уже отдельно с его колорТрансформом.

П.С.: event.target - это ссылка на текущий объект события, а не на тот объект, на который был назначен слушатель. То есть, даже если слушатель назначен на mRect, то event.target может вернуть любой дочерний элемент mRect. Например, event.target может вернуть numText. Напиши trace(event.target) и увидишь. Поэтому, чтобы получить ссылку именно на тот объект, на который был назначен слушатель, нужно писать event.currentTarget. event.currentTarget всегда будет возвращать только mRect.
__________________
В лесу родилась ёлочка, в лесу она росла! Зимой и летом...

Старый 17.06.2013, 00:26
funkypanky вне форума Посмотреть профиль Отправить личное сообщение для funkypanky Найти все сообщения от funkypanky
  № 3  
Ответить с цитированием
funkypanky

Регистрация: Jun 2013
Сообщений: 22
Цитата:
Сообщение от Ёлочка Посмотреть сообщение
1. Поменяй местами i и j.
Код AS3:
mRect.x =100+ j*45
mRect.y =100+ i*45
2. ColorTransform изменяет цвет и квадрата, и текста, поэтому текст никуда не пропадает, а просто сливается с квадратом. Создай внутри cube еще один мувиклип для фона, пропиши ему имя и работай уже отдельно с его колорТрансформом.

П.С.: event.target - это ссылка на текущий объект события, а не на тот объект, на который был назначен слушатель. То есть, даже если слушатель назначен на mRect, то event.target может вернуть любой дочерний элемент mRect. Например, event.target может вернуть numText. Напиши trace(event.target) и увидишь. Поэтому, чтобы получить ссылку именно на тот объект, на который был назначен слушатель, нужно писать event.currentTarget. event.currentTarget всегда будет возвращать только mRect.
Спасибо! много интересного узнал)
Осталась всё же проблема с наведением мышки на любой из квадратов. При наведении меняется цвет фона, но когда мышка попадет на цифры, эта область никак не реагирует( как бы цифры мешают тому, чтобы подсвечивался фон, область цифры при этом закрывает треть квадрата)
Я создал внутренний мувиклип внутри клипа mRect, назвал его mBack.

далее создал слушатели для этого вложенного клипа:

Код AS3:
mRect.mBack.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
      mRect.mBack.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
в функциях прописал соответственно:

Код AS3:
event.currentTarget.transform.colorTransform = ct;
не понимаю почему текстовое поле мешает наведению на клетку, ведь по идее я обращаюсь именно ко вложенному клипу mBack внутри mRect.
если не сложно можно посмотреть мой пример?
ps.: кстати в трейс выводит вместо mBack [object MovieClip], но если вписать trace(event.target.name) то выводит верное название вложенного клипа .
Вложения
Тип файла: rar поле_квадратов-2.rar (6.4 Кб, 31 просмотров)


Последний раз редактировалось funkypanky; 17.06.2013 в 02:31.
Старый 17.06.2013, 01:52
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 4  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
mRect.mouseChildren = false

Старый 17.06.2013, 02:04
funkypanky вне форума Посмотреть профиль Отправить личное сообщение для funkypanky Найти все сообщения от funkypanky
  № 5  
Ответить с цитированием
funkypanky

Регистрация: Jun 2013
Сообщений: 22
Цитата:
Сообщение от MikroAcse Посмотреть сообщение
Код AS3:
mRect.mouseChildren = false
а где это должно быть прописано? в цикле или в теле функции? вставлял и там и там -не помогает.
mBack и numText (фон и цифры соответственно) - это дочерние клипы клипа mRect.

В документации написано, что свойство mouseChildren (flash.display.DisplayObjectContainer.mouseChildren ) позволяет включать и выключать возможность реагировать на события от мышки для всех вложенных мувиклипов.
Получается и фон тоже перестаёт реагировать на мышь.

Добавлено через 53 минуты
Всё) нашёл где собака зарыта)
нужно было отключить реакцию вложенного в клип текста на мышь)
всем спасибо за помощь ещё раз!)

Старый 18.06.2013, 10:01
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 6  
Ответить с цитированием
gagaga
[+1 22.04.13]
[+1 06.03.13]

Регистрация: Apr 2012
Сообщений: 239
используй событие ROLL_OVER

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

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

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


 


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


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