﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Keith Hair &#187; Cursor</title>
	<atom:link href="http://keith-hair.net/blog/tag/cursor/feed/" rel="self" type="application/rss+xml" />
	<link>http://keith-hair.net/blog</link>
	<description>Scripting is fun like any other hobby</description>
	<lastBuildDate>Sat, 28 Jan 2012 05:04:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Letting DisplayObjects Find the Main WindowedApplication in AIR</title>
		<link>http://keith-hair.net/blog/2009/04/30/letting-displayobjects-find-the-main-windowedapplication-in-air/</link>
		<comments>http://keith-hair.net/blog/2009/04/30/letting-displayobjects-find-the-main-windowedapplication-in-air/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 20:48:59 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Cursor]]></category>
		<category><![CDATA[WindowedApplication]]></category>

		<guid isPermaLink="false">http://keith-hair.net/blog/?p=29</guid>
		<description><![CDATA[Here is a way to let a DisplayObject find the main WindowedApplication on its own... In my AIR application I have other AIR Windows floating over the main AIR Window. I wanted one of my UIComponents to be draggable like a cursor, but when my mouse dragged the object over the other floating windows I [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a way to let a DisplayObject find the main WindowedApplication on its own...</p>
<p>In my AIR application I have other AIR Windows floating over the main AIR Window.<br />
I wanted one of my UIComponents to be draggable like a cursor, but when my mouse dragged the object<br />
over the other floating windows I wanted my original cursor to show again and hide my dragged UIComponent.</p>
<p>The reason behind this is if I wanted to apply "context sensitive" behaviors depending on what or which window the mouse is in.</p>
<p>To do this, the main WindowedApplication needed some ROLL_OUT and ROLL_OVER events added to it to detect when the mouse rolls in and out.<br />
The "getAIRAppWindow" method below finds the main WindowedApplication so I can add the listeners to it from there.</p>
<p>Here are some snippets explaining what I did:</p>
<p><span id="more-29"></span></p>
<p><strong>The method needed to find main WindowedApplication</strong></p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">/*----------------------------------------------------------
Finds the main WindowedApplication of an AIR application
from any UIComponent and returns it.
------------------------------------------------------------*/</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getAIRAppWindow<span style="color: #66cc66;">&#40;</span>p:DisplayObjectContainer<span style="color: #66cc66;">&#41;</span>:WindowedApplication
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> c:*=p;
	<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span>c.<span style="color: #006600;">parent</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>c is WindowedApplication<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
					<span style="color: #b1b100;">return</span> WindowedApplication<span style="color: #66cc66;">&#40;</span>c<span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
			c=c.<span style="color: #006600;">parent</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">null</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p><strong><br />
Adding events to detect mouse in main Windowed Application</strong></p>
<pre class="actionscript">&nbsp;
_windowedApp=getAIRAppWindow<span style="color: #66cc66;">&#40;</span>parent<span style="color: #66cc66;">&#41;</span>;
&nbsp;
_windowedApp.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">ROLL_OUT</span>,__onMouseOutWorkSpace<span style="color: #66cc66;">&#41;</span>;
_windowedApp.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">ROLL_OVER</span>,__onMouseInWorkSpace<span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p><strong><br />
Example of actions to apply on ROLL_OUT and ROLL_OVER</strong></p>
<pre class="actionscript">&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> __onMouseOutWorkSpace<span style="color: #66cc66;">&#40;</span>evt:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/*--------------------------------------------------------
	When your mouse rolls out of the main WindowedApplication
	(and into other nested Windows) you can make your regular
	mouse cursor show again here, while hiding your custom cursor.
	----------------------------------------------------------*/</span>
	yourCustomCursor.<span style="color: #0066CC;">visible</span>=<span style="color: #000000; font-weight: bold;">false</span>;
	<span style="color: #0066CC;">Mouse</span>.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> __onMouseInWorkSpace<span style="color: #66cc66;">&#40;</span>evt:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/*--------------------------------------------------------
	When your mouse rolls back in the main WindowedApplication
	(and out of other nested Windows) you can hide your regular
	mouse cursor, while showing your custom cursor again.
	----------------------------------------------------------*/</span>
	yourCustomCursor.<span style="color: #0066CC;">visible</span>=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #0066CC;">Mouse</span>.<span style="color: #0066CC;">hide</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<a href='http://www.hexosearch.com/se/submit.aspx?zlvz=&zqz=&zurlz=http://keith-hair.net/blog/2009/04/30/letting-displayobjects-find-the-main-windowedapplication-in-air/&ztz=Letting DisplayObjects Find the Main WindowedApplication in AIR'><img src='http://keith-hair.net/blog/wp-content/plugins/hexosearch-button/logo16x16.png' width='16' height='16' border='0' style='vertical-align:middle' alt='Vote in HexoSearch' title='Vote in HexoSearch' /></a>]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2009/04/30/letting-displayobjects-find-the-main-windowedapplication-in-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

