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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.08.2011, 13:34
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 61  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Код AS3:
_text.htmlText += _info..friends.friend[i].toString();

Старый 23.08.2011, 13:55
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 62  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Строчку btn_tools.addEventListener(MouseEvent.CLICK, buttonClickHandler); надо было перенести туда, где добавляете btn_tools в контейнер блока, в prepare(). Сейчас у Вас кнопка есть, но слушатель на нее не добавлен, соответственно при первом нажатии выполняется обработчик не кнопки, а всего блока.
2.
Цитата:
нО при таком коде кнопка будет вызывать сразу несколько функций..А не каждая кнопка свою..
Почему это? Вся цепочка же идет с индивидуальным идентификатором (_2, _3). В самом инфоБлоке можно и не городить несколько обработчиков-редиспатчеров, а просто определять, какую именно кнопку нажали и диспатчить наружу соответствующее событие. C какой стати в Мейне сработает обработчик другого события?
3. У Вас же перенос строки стоит - \n, потому и в столбик))

Добавлено через 1 минуту
опоздал((
__________________
Reality.getBounds(this);

Старый 23.08.2011, 15:05
Drac0Sha вне форума Посмотреть профиль Отправить личное сообщение для Drac0Sha Найти все сообщения от Drac0Sha
  № 63  
Ответить с цитированием
Drac0Sha

Регистрация: Aug 2011
Сообщений: 50
Цитата:
2.
Цитата:
нО при таком коде кнопка будет вызывать сразу несколько функций..А не каждая кнопка свою..
Почему это? Вся цепочка же идет с индивидуальным идентификатором (_2, _3). В самом инфоБлоке можно и не городить несколько обработчиков-редиспатчеров, а просто определять, какую именно кнопку нажали и диспатчить наружу соответствующее событие. C какой стати в Мейне сработает обработчик другого события?
Описал как говорите
Код AS3:
private function prepare():void
  {
this.addChild(btn_no);  btn_no.y=15; btn_no.x = 500;
this.addChild(btn_tools); btn_tools.y = 15; btn_tools.x = 540;
btn_no.addEventListener(MouseEvent.CLICK, buttonClickHandler_no);
btn_tools.addEventListener(MouseEvent.CLICK,buttonClickHandler_tools);
 
}
 
 
 
private function buttonClickHandler_no(event:MouseEvent):void 
  {
   event.stopImmediatePropagation();
   dispatchEvent(new Event(BLOCK_BUTTON_CLICKED_NO));
  }
private function buttonClickHandler_tools(event:MouseEvent):void 
  {
   event.stopImmediatePropagation();
   dispatchEvent(new Event(BLOCK_BUTTON_CLICKED_TOOLS));
  }
В Meine dataCOmpleteHadler:

Код AS3:
 
//...
 
{
block.y = blockHeight;
blockHeight += block.height + 1;
block.addEventListener(MouseEvent.CLICK, infoBlockClickHandler);
block.addEventListener(InfoBlock.BLOCK_BUTTON_CLICKED_NO,testing_one);
block.addEventListener(InfoBlock.BLOCK_BUTTON_CLICKED_TOOLS,testing_two);
blocksContainer.addChild(block);
_blocksArray.push(block);
}
при нажатии одно из двух кнопок вызываются обе функции и testing_one и testing_two.Причем все равно какую кнопку нажать..Все равно
будут вызываться обе функции.

Код AS3:
for (var i:uint = 0; i < friends_number.length(); i++)
   {
      _text.htmlText += _info..friends.friend[i].toString();
   }
Все равно в столбик выводит)

Старый 23.08.2011, 16:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 64  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Это через другую кнопку всплывает событие клика от самого блока, и, хоть и останавливается кнопкой, но кнопка диспатчит свое событие, как будто кликнули ее. Надо поставить проверку такого вида
Код AS3:
private function buttonClickHandler_no(event:MouseEvent):void 
{
   event.stopImmediatePropagation();
   if (event.target == btn_no)
   {
      dispatchEvent(new Event(BLOCK_BUTTON_CLICKED_NO) );
   }
}
И, как я уже говорил, такой обработчик можно сделать один для всех кнопок, нагородив в нем if'ов или поставив switch. Не очень кошерно, но для постоянного кол-ва кнопок сойдет.

Добавлено через 40 минут
Код AS3:
_text.htmlText += ( _info..friend.toString() ).replace(/[\n\r]+/, ", ");
__________________
Reality.getBounds(this);

Старый 23.08.2011, 17:21
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 65  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вот как-то так.
Вложения
Тип файла: zip InfoBlocks3_CS5.zip (17.5 Кб, 18 просмотров)
__________________
Reality.getBounds(this);

Старый 23.08.2011, 18:17
Drac0Sha вне форума Посмотреть профиль Отправить личное сообщение для Drac0Sha Найти все сообщения от Drac0Sha
  № 66  
Ответить с цитированием
Drac0Sha

Регистрация: Aug 2011
Сообщений: 50
Спасибо большое ! очень помогли ! отличный форум !

Старый 24.08.2011, 12:32
Drac0Sha вне форума Посмотреть профиль Отправить личное сообщение для Drac0Sha Найти все сообщения от Drac0Sha
  № 67  
Ответить с цитированием
Drac0Sha

Регистрация: Aug 2011
Сообщений: 50
Здравстуйте еще раз ) Опять возникло два вопросика.В data.xml у меня были поля :
Код:
...
<friends> 
<friend> Дмитрий </friend>
<friend> Олег </friend>
</friends>
...
Я попытался сделать их ссылками. НО я заметил, что
1)они становятся ссылками, но идут в столбик, как можно сделать в строчку ? или это невозможно?
2)Я пытаюсь сделать, чтобы при нажатии например на "Дмитрий" функция через trace отобразила "Дмитрий", но не понимаю как можно передать ей id того на кого я нажал.
просто при функции trace ( block.info.friends.friend) результат будет:
Код:
<friend> Дмитрий </friend>
<friend> Олег </friend>
Поэтому логично было бы делать trace ( block.info.friends.friend[i]); ,но как передать i ?

И второй вопросик:Так как может быть много блоков, они могут уходить за пределы флешки, поэтому понадобится скролл. Так вот, чтобы его организовать нужно создать текстовое поле
с размером самой флешки, и выводить в него блоки ?
Вложения
Тип файла: rar InfoBlocks.rar (16.0 Кб, 18 просмотров)

Старый 24.08.2011, 13:37
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 68  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Чтож, пришлось таки вернуться к первоначальной идее с редиспатчем события CLICK. То есть Мейн теперь не слушает мышиных кликов по блоку, блок сам сообщает ему, что был кликнут)
Вложения
Тип файла: zip InfoBlocks4_CS5.zip (16.9 Кб, 20 просмотров)
__________________
Reality.getBounds(this);

Старый 25.08.2011, 11:35
Drac0Sha вне форума Посмотреть профиль Отправить личное сообщение для Drac0Sha Найти все сообщения от Drac0Sha
  № 69  
Ответить с цитированием
Drac0Sha

Регистрация: Aug 2011
Сообщений: 50
Спасибо огромное, всё реализовал
а ещё я хотел спросить
второй вопросик:Так как может быть много блоков, они могут уходить за пределы флешки, поэтому понадобится скролл. Так вот, чтобы его организовать нужно создать текстовое поле
с размером самой флешки, и выводить в него блоки ?

Старый 25.08.2011, 15:04
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 70  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А при чем здесь текстовое поле то? Не понял логики. Как Вы собираетесь "выводить в него блоки" и как это решит проблему скроллинга?
Раньше был такой компонент, наверное есть и сейчас - ScrollArea, попробуйте его. Ну или пишите свой скроллер/используйте компонент ScrollBar. Для контейнера можно определить свойство scrollRect и подключить какой-нибудь механизм скроллирования, какой Вам нравится - скроллбар или кнопки "перемотки" сверху и снизу, перемотка колесиком мышки. В любом случае, думаю, это отдельная тема. Возникнет главная проблема - изменяющийся размер контента, требующий пересчета скроллера.
__________________
Reality.getBounds(this);

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

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

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


 


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


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