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

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

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

Регистрация: Nov 2006
Сообщений: 176
По умолчанию Обработка события для своего компонента

Я хочу создать Drag'n'Drop для своего компонента, но хочу что бы перетаскивание происходило только за титульную область компонента, как окно...
Вопрос, как из главной программы получать currentTarget для элемента в моём компоненте при появлении события к моему компоненту, например, MouseDown...

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

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 489
Отправить сообщение для Snut с помощью ICQ Отправить сообщение для Snut с помощью MSN Отправить сообщение для Snut с помощью Skype™
написать собственное событие.
__________________
Работаю

Старый 28.02.2008, 02:43
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 3  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
Вот написал код компонента StringItem:
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="154" height="48" borderStyle="solid" borderThickness="2" borderColor="#9898DC" backgroundColor="#EAD2D2"
	>
	<mx:Metadata>
		[Event(name="canvasMove", type="flash.events.MouseEvent")  ]
	</mx:Metadata>
	
	<mx:Script>
		<![CDATA[		
			[Bindable]
			public var dataProvider:String = "Test";			

			public function onCanvasDown():void{
				var event:MouseEvent = new MouseEvent("canvasMove");
				dispatchEvent(event);
			}			
		]]>
	</mx:Script>

	<mx:Canvas  height="17" top="0" left="0" right="0" backgroundColor="#2020A1" 
		mouseMove="onCanvasDown()" />	
		
</mx:Canvas>
главного приложения:
Код:
<?xml version="1.0"?>
<!-- dragdrop\DandDImageCopyMove.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" xmlns:mc="MyComponents.*"
    >
    
    <mx:Script>
    	<![CDATA[
    	import MyComponents.StringItem;
        import mx.core.DragSource;
        import mx.managers.DragManager;
        import mx.events.*;        
        import mx.containers.Canvas;
    	
    	private function mouseMoveHandler(event:MouseEvent):void {            
            var dragInitiator:StringItem=StringItem(event.currentTarget);           
            var dragText:String = dragInitiator.dataProvider;            
            var ds:DragSource = new DragSource();            
            ds.addData(dragText, 'text');             
            DragManager.doDrag(dragInitiator, ds, event);            
        }
        private function dragEnterHandler(event:DragEvent):void {            
            if (event.dragSource.hasFormat('text')) {
                var dropTarget:TextArea=TextArea(event.currentTarget);                
                DragManager.acceptDragDrop(dropTarget);
            }
        }
        private function dragDropHandler(event:DragEvent):void {            
           var data:Object = event.dragSource.dataForFormat('text');            
           TextArea(event.currentTarget).text += data + "\n";  
        }           	
    		
    	]]>
    </mx:Script>
    
    <mx:TextArea 
    	id="ta" x="39" y="65" height="241" width="117"
    	dragEnter="dragEnterHandler(event);" 
    	dragDrop="dragDropHandler(event);"
    	/>
    <mc:StringItem 
		canvasMove="mouseMoveHandler(event);"		   	
    	id="si"  x="241" y="84"  height="49" width="97"/>
</mx:Application>
Всё работает, только при переносе компонента за титульник, образ компонента сдвигается так, что бы мышь находилась в левом верхнем углу компонента... если заменить строку
Код:
canvasMove="mouseMoveHandler(event);"
на
Код:
mouseMove="mouseMoveHandler(event);"
образ компонента распологается там где был произведён захват, то есть правильно... но перемещение за титульник уже не работает естественно...


+ вопрос, отличается чем-то библиотеки mx.events и flash.events?

Можно ли создать реализацию Drag'n'Dropa в самом компоненте, а не в главном приложении.. Чтобы оно было готово сразу же при добавлении компонента в главное приложение...

вот написал такой компонент:
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100"	
	creationComplete="initApp();"
	 backgroundColor="#B84545" borderColor="#655CDA" borderStyle="solid" borderThickness="3" backgroundAlpha="0.4" alpha="0.5">
	<mx:Script>
		<![CDATA[
			
			public function initApp():void{
				addDrag();			
			}			
			
			public function addDrag():void{
				this.addEventListener(MouseEvent.MOUSE_DOWN,dispObjStartDrag);
			}			
			public function delDrag():void{
				this.removeEventListener(MouseEvent.MOUSE_DOWN, dispObjStartDrag);			
			}		
			private	function dispObjStartDrag(e:MouseEvent):void{			
				e.currentTarget.addEventListener(MouseEvent.MOUSE_MOVE,updateDrag)	
				e.currentTarget.startDrag();			
				e.currentTarget.addEventListener(MouseEvent.MOUSE_UP,
					function (e:MouseEvent):void{
						e.currentTarget.stopDrag();
						e.currentTarget.removeEventListener(MouseEvent.MOUSE_MOVE,updateDrag)														
					}
				)			
			};
		    public function updateDrag(e:MouseEvent):void{
				e.updateAfterEvent();
			}						
		]]>
	</mx:Script>	
	
</mx:Canvas>
вроде работает.. теперь бы реализовать Drag'n'Drop как обмен данными..


Последний раз редактировалось etc; 01.03.2008 в 00:43.
Старый 05.03.2008, 15:37
Pow R. Toc H. вне форума Посмотреть профиль Отправить личное сообщение для Pow R. Toc H. Найти все сообщения от Pow R. Toc H.
  № 4  
Ответить с цитированием
Pow R. Toc H.

Регистрация: Nov 2006
Сообщений: 176
Столкнулся с проблемой, не при перетаскивании изображения-образа не обабатывается событе MouseOver для объекта, который может принять данные...
какие могут быть варианты решения этой проблемы?
Помогите пожалуйста, иначе, о горе!...мне придётся использовать стандартную реализацию.


Последний раз редактировалось Pow R. Toc H.; 05.03.2008 в 19:29.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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