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

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

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

Регистрация: Apr 2004
Адрес: Челябинск
Сообщений: 131
Отправить сообщение для Azy с помощью ICQ
По умолчанию ContextMenuEvent и Tree

Возможно ли отследить на каком конкретно элементе дерева был вызван ContextMenuEvent? Повешал так:
Код:
		private function initContextMenu():void
		{
			this.contextMenu = new ContextMenu();
			this.contextMenu.hideBuiltInItems();
			this.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, this.contextMenuAddEvent);
			
			contextMenuAdd = new ContextMenuItem("Добавить подкатегорию");
			this.contextMenu.customItems.push(contextMenuAdd);
			//contextMenuAdd.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenuAddEvent);
		}
		
		public function contextMenuAddEvent(event:ContextMenuEvent):void
		{
			trace(event.mouseTarget);
		}
На все он мне выдает Editor0.Panel4.HBox6.VBox7.tree.ListBaseContentHolder11.
Или придется инициализировать контекстное меню для ItemRenderer-a?

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

Регистрация: Apr 2004
Адрес: Челябинск
Сообщений: 131
Отправить сообщение для Azy с помощью ICQ
Написал рендерер:
Код:
package CellRenderers
{

import mx.controls.treeClasses.*;
import mx.collections.*;
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
import flash.ui.ContextMenuBuiltInItems;
import flash.events.ContextMenuEvent;
import flash.events.ContextMenuEvent;    
	
	public class ETreeItemRenderer extends TreeItemRenderer
	{
		private var contextMenuAdd:ContextMenuItem;
				
		public function ETreeItemRenderer() 
		{
			super();
			mouseEnabled = false;
			initContextMenu();
		}
		
		public function contextMenuAddEvent(event:ContextMenuEvent):void
		{
			trace(1);
		}		
		
		private function initContextMenu():void
		{
			this.contextMenu = new ContextMenu();
			this.contextMenu.hideBuiltInItems();
			this.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, this.contextMenuAddEvent);
			
			contextMenuAdd = new ContextMenuItem("Добавить подкатегорию");
			this.contextMenu.customItems.push(contextMenuAdd);
			contextMenuAdd.addEventListener(ContextMenuEvent.MENU_SELECT, this.contextMenuAddEvent);
		}
	}
}
Сволотч не пашет =(((( Контекстное меню не поменялось.

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

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Azy мы за тебя проект будем делать?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 09.02.2007, 14:07
Azy вне форума Посмотреть профиль Отправить личное сообщение для Azy Посетить домашнюю страницу Azy Найти все сообщения от Azy
  № 4  
Ответить с цитированием
Azy
 
Аватар для Azy

Регистрация: Apr 2004
Адрес: Челябинск
Сообщений: 131
Отправить сообщение для Azy с помощью ICQ
Неа. Где могу - сам ищу. Если не получается найти здесь спрашиваю.

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

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

Старый 09.02.2007, 14:58
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 6  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Ну мне ужо надоело =)
Передаю эстафету кому нить другому.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 14.02.2007, 17:29
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 7  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Код:
m = new ContextMenu();
				m.hideBuiltInItems();
				var customItemsArr:Array = new Array();
				var buy:ContextMenuItem = new ContextMenuItem("Detailed");
				buy.addEventListener("menuItemSelect", buyHandler);
				customItemsArr.push(buy);
				m.customItems = customItemsArr;
				callTree.contextMenu=m;
Вроде как вот это забыл добавить callTree.contextMenu=m; (callTree просто id дерева )

Старый 14.02.2007, 18:10
JabbyPanda вне форума Посмотреть профиль Отправить личное сообщение для JabbyPanda Найти все сообщения от JabbyPanda
  № 8  
Ответить с цитированием
JabbyPanda

Регистрация: Sep 2006
Сообщений: 2
Используй ContextMenuManager, написанный by Nirth - http://orangeflash.eu/?p=90, хорошая вещь

Старый 14.02.2007, 20:55
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 9  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Ну и причем тут контекст меню манагер??? И Нирт тоже молодца, как что ничего-непонятно-делай-приятель-сам-свой-проект или форум-для-того-чтобы-общаться-а-не-решать-проблемы

Сабж топика злой - приходиться повторить - люди кто знает как отловить возможно отследить на каком конкретно элементе дерева был вызван ContextMenuEvent? Потому как полный писец.

Старый 15.02.2007, 08:57
Azy вне форума Посмотреть профиль Отправить личное сообщение для Azy Посетить домашнюю страницу Azy Найти все сообщения от Azy
  № 10  
Ответить с цитированием
Azy
 
Аватар для Azy

Регистрация: Apr 2004
Адрес: Челябинск
Сообщений: 131
Отправить сообщение для Azy с помощью ICQ
Решил проблему.
1. Пишем свой итемрендерер.
2. Отлавливаем маусовер и записываем в какею-либо переменную дерева данный элемент.
3. В дереве при вызове контекстного меню проверяем эту переменную

Код итемрендерера:
Код:
package CellRenderers.Classes
{
	import mx.controls.treeClasses.*;
	import mx.collections.*;
	import flash.ui.ContextMenu;
	import flash.ui.ContextMenuItem;
	import flash.ui.ContextMenuBuiltInItems;
	import flash.events.ContextMenuEvent;
	import flash.events.ContextMenuEvent;
	import flash.events.MouseEvent;
	import editor.ETree;

	public class ETreeItemRenderer extends TreeItemRenderer
	{
		public function ETreeItemRenderer() 
		{
			super();
			this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverEvent);
		}
		
		public function mouseOverEvent(event:MouseEvent):void
		{
			var myListData:TreeListData	= TreeListData(listData);
			var eTree:ETree = ETree(this.listData.owner);
			eTree.setOverItem(myListData);
		}	
	}
}
]
Обработка в дереве:
Код:
public class ETree extends Tree
{
	...
	public var overItem:TreeListData;
	...
	public function treeContextMenuEvent(event:ContextMenuEvent):void
	{
		selectedItem	= overItem.item;
		//If toplevel category then disable first menu item
		if (TreeListData(overItem).depth==1)
		{
			contextMenu.customItems[0].enabled = false;	
		}
	}
}

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

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

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


 


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


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