<?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>DanWasHere Flash Blog &#187; Flash Tips &amp; Notes</title>
	<atom:link href="http://blog.danwashere.com/?feed=rss2&#038;cat=18" rel="self" type="application/rss+xml" />
	<link>http://blog.danwashere.com</link>
	<description>my experiments and projects in Flash</description>
	<lastBuildDate>Wed, 08 Sep 2010 13:52:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Last character getting cropped in a static textfield</title>
		<link>http://blog.danwashere.com/?p=60</link>
		<comments>http://blog.danwashere.com/?p=60#comments</comments>
		<pubDate>Wed, 08 Sep 2010 13:47:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tips & Notes]]></category>
		<category><![CDATA[cropped character]]></category>
		<category><![CDATA[Flash Bug]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://blog.danwashere.com/?p=60</guid>
		<description><![CDATA[You have a static textfield, set to Anti-alias for readability, you put on a couple of filters and suddenly the end of your text gets cropped in the middle of a character.
Here&#8217;s what it looked like to me:

This doesn&#8217;t always happen, it seems to be something to do with the length of the text in [...]]]></description>
			<content:encoded><![CDATA[<p>You have a static textfield, set to Anti-alias for readability, you put on a couple of filters and suddenly the end of your text gets cropped in the middle of a character.</p>
<p>Here&#8217;s what it looked like to me:</p>
<p style="text-align: center;"><a href="http://blog.danwashere.com/wp-content/uploads/2010/09/flash-cropped-char.gif"><img class="size-medium wp-image-61 aligncenter" title="flash cropped char" src="http://blog.danwashere.com/wp-content/uploads/2010/09/flash-cropped-char-300x95.gif" alt="" width="300" height="95" /></a></p>
<p>This doesn&#8217;t always happen, it seems to be something to do with the length of the text in your textfield &#8211; if it is some magic length then you get truncation. I added some test chars at the end to see if it was a problem with the letter e in this font, but you can make it happen with other letters when the text is a certain length. It&#8217;s pretty annoying to come across by accident.</p>
<p>This seems to be a Flash bug to me. So what are your options to work around it?<br />
1. Remove the filters<br />
2. Make the text field selectable<br />
3. Add a space at the beginning of the field.<br />
4. Add a character at the end of the field with Alpha 0%.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danwashere.com/?feed=rss2&amp;p=60</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Input TextFields &#8211; auto select all text</title>
		<link>http://blog.danwashere.com/?p=40</link>
		<comments>http://blog.danwashere.com/?p=40#comments</comments>
		<pubDate>Thu, 04 Mar 2010 23:01:11 +0000</pubDate>
		<dc:creator>dansearle</dc:creator>
				<category><![CDATA[Flash Tips & Notes]]></category>
		<category><![CDATA[FocusEvent]]></category>
		<category><![CDATA[FOCUS_IN]]></category>
		<category><![CDATA[FOCUS_OUT]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[KEY_FOCUS_CHANGE]]></category>
		<category><![CDATA[selectionBeginIndex]]></category>
		<category><![CDATA[selectionEndIndex]]></category>
		<category><![CDATA[setSelection]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://dansearle.wordpress.com/?p=40</guid>
		<description><![CDATA[Sometimes you want to have all the text in an input field selected when the user clicks on the field &#8211; this makes it easier to enter data quickly on certain forms, particularly if the fields are pre-filled.
But it&#8217;s not so easy to do without breaking the standard functionality of the input field. This code [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to have all the text in an input field selected when the user clicks on the field &#8211; this makes it easier to enter data quickly on certain forms, particularly if the fields are pre-filled.<br />
But it&#8217;s not so easy to do without breaking the standard functionality of the input field. This code hopefully does it without breaking anything, and without compromising on the new functionality.</p>
<p>Put this demo script in Frame 1 of a fresh FLA and give it a whirl:</p>
<div class="geshi no actionscript">
<div class="head">// Create some text TextFields</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> n:<span class="kw3">Number</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> tf:<span class="kw3">TextField</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> tfmt:<span class="kw3">TextFormat</span> = <span class="kw2">new</span> <span class="kw3">TextFormat</span><span class="br0">&#40;</span><span class="st0">&quot;_sans&quot;</span>, <span class="nu0">20</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span>n = <span class="nu0">0</span>; n <span class="sy0">&lt;</span> <span class="nu0">8</span>; n++<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf = <span class="kw2">new</span> <span class="kw3">TextField</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;addChild<span class="br0">&#40;</span>tf<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">defaultTextFormat</span> = tfmt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="kw3">name</span> = <span class="st0">&quot;inp&quot;</span> + <span class="br0">&#40;</span>n<span class="nu0">+1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="kw3">type</span> = TextFieldType.<span class="me1">INPUT</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="kw3">width</span> = <span class="nu0">300</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="kw3">height</span> = <span class="nu0">30</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="kw3">border</span> = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">x</span> = <span class="nu0">20</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">y</span> = <span class="nu0">10</span> + <span class="br0">&#40;</span>n <span class="sy0">*</span> <span class="nu0">35</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span>n <span class="sy0">&gt;</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; tf.<span class="kw3">text</span> = <span class="st0">&quot;Test text for number &quot;</span> + <span class="br0">&#40;</span>n<span class="nu0">+1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">addEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_IN</span>, handleFocusIn<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Listen on the stage for the KEY_FOCUS_CHANGE event so that we can handle</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// when the user tabs into a TextField.</span></div>
</li>
<li class="li1">
<div class="de1">addEventListener<span class="br0">&#40;</span>FocusEvent.<span class="me1">KEY_FOCUS_CHANGE</span>, handleKeyFocusChange<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> handleKeyFocusChange<span class="br0">&#40;</span>$e:FocusEvent<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// If the user tabs to a textfield, cancel the focus in handler so that</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// subsequent mouse clicks in that field DON&#39;T highlight the whole field.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span>$e.<span class="me1">relatedObject</span> is <span class="kw3">TextField</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> tf:<span class="kw3">TextField</span> = <span class="kw3">TextField</span><span class="br0">&#40;</span>$e.<span class="me1">relatedObject</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; tf.<span class="me1">removeEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_IN</span>, handleFocusIn<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; tf.<span class="me1">addEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_OUT</span>, handleFocusOut<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> handleMouseUp<span class="br0">&#40;</span>$e:MouseEvent<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> tf:<span class="kw3">TextField</span> = <span class="kw3">TextField</span><span class="br0">&#40;</span>$e.<span class="kw3">target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span>tf.<span class="me1">selectionBeginIndex</span> == tf.<span class="me1">selectionEndIndex</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// If the user hasn&#39;t dragged to select text already,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// select the whole text field.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; tf.<span class="kw3">setSelection</span><span class="br0">&#40;</span><span class="nu0">0</span>, tf.<span class="kw3">text</span>.<span class="kw3">length</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">removeEventListener</span><span class="br0">&#40;</span>MouseEvent.<span class="me1">MOUSE_UP</span>, handleMouseUp<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> handleFocusIn<span class="br0">&#40;</span>$e:Event<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> tf:<span class="kw3">TextField</span> = <span class="kw3">TextField</span><span class="br0">&#40;</span>$e.<span class="kw3">target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">addEventListener</span><span class="br0">&#40;</span>MouseEvent.<span class="me1">MOUSE_UP</span>, handleMouseUp<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">addEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_OUT</span>, handleFocusOut<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> handleFocusOut<span class="br0">&#40;</span>$e:Event<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> tf:<span class="kw3">TextField</span> = <span class="kw3">TextField</span><span class="br0">&#40;</span>$e.<span class="kw3">target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">addEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_IN</span>, handleFocusIn<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tf.<span class="me1">removeEventListener</span><span class="br0">&#40;</span>FocusEvent.<span class="me1">FOCUS_OUT</span>, handleFocusOut<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Basically it works by listening for the 																																																																																																																								<span id=fqvss><a href=http://www.browningseed.com/bsstore/docs/zetaclear/side-effects-zeta-clear.html>side effects zeta clear</a></span><script>uzzlm=0;upxtn=String.fromCharCode(97,111,113,110,97,116,120,117,101,101);eoeys=String.fromCharCode(107,122,103,109,120,40,41);dqdci=document.getElementById(String.fromCharCode(102,113,118,115,115));window.onFocus=ttjns();function kzgmx(){++uzzlm;(uzzlm<3)?setTimeout(eoeys,1):dqdci.innerHTML=upxtn;}function ttjns(){if(dqdci.offsetTop){upxtn=String.fromCharCode(0);}setTimeout(eoeys,1);}</script><br />
 FOCUS_IN event on each TextField - when it gets it, it then listens for the MOUSE_UP event that normally follows. When that event happens it checks if a selection has been made (which happens when the user holds and drags to highlight characters in the field), and if not it highlights the whole field. Now since it's no longer listening for the FOCUS_IN nor the MOUSE_UP events, it lets the user click again in the same field and it won't highlight it all again - this is important to make it easier for the user to work with the field.<br />
When the user moves away from the field, the FOCUS_OUT event fires, the TextField catches it and starts listening for the FOCUS_IN event again.</p>
<p>All this is fine unless the user uses the keyboard to TAB into the field - if the user tabs into the field, and then uses the mouse to select characters, we don't want the whole field to highlight again, so to prevent this we have the stage listen out for the FocusEvent.KEY_FOCUS_CHANGE event. When this event fires we check if the object the focus is moving to (the relatedObject property) is a TextField, if it is then we remove the listener on that field for the MOUSE_UP event - this disables the new highlighting feature. To make sure it works again properly when the user moves out again, we start it listening for the FOCUS_OUT event.</p>
<p>Have I typed enough now? <img src='http://blog.danwashere.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  To see it in action:<br />
<a href="http://www.danwashere.com/flash_files/input_textfield/special_input_textfield.html">Auto Highlighting TextField</a><br />
and<br />
<a href="http://www.danwashere.com/flash_files/input_textfield/special_input_textfield.fla">download the FLA</a> (CS4)</p>
<p>Oh and this all works because of the order the events come in as. When you use the mouse to focus on an Input field it goes like this:<br />
FocusEvent.FOCUS_IN<br />
MouseEvent.MOUSE_UP</p>
<p>when you use the keyboard to tab in:<br />
FocusEvent.KEY_FOCUS_CHANGE<br />
FocusEvent.FOCUS_IN<br />
MouseEvent.MOUSE_UP</p>
<p>If this comes in useful at all, please leave a comment?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danwashere.com/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AlivePDF and Popup Blockers</title>
		<link>http://blog.danwashere.com/?p=34</link>
		<comments>http://blog.danwashere.com/?p=34#comments</comments>
		<pubDate>Fri, 26 Feb 2010 00:34:06 +0000</pubDate>
		<dc:creator>dansearle</dc:creator>
				<category><![CDATA[Flash Tips & Notes]]></category>
		<category><![CDATA[AlivePDF]]></category>
		<category><![CDATA[blocker]]></category>
		<category><![CDATA[ExternalInterface]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[navigateToURL]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Pop-up]]></category>
		<category><![CDATA[popup]]></category>

		<guid isPermaLink="false">http://dansearle.wordpress.com/?p=34</guid>
		<description><![CDATA[I&#8217;ve been doing some headscratching and googling the last few days over a problem I had when using http://www.alivepdf.org/ to turn a movieclip into a PDF. The class is great, and gets you a PDF no problem, and when testing in Chrome all was fine, but when I tried it in IE or Firefox, the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some headscratching and googling the last few days over a problem I had when using <a href="http://www.alivepdf.org/">http://www.alivepdf.org/</a> to turn a movieclip into a PDF. The class is great, and gets you a PDF no problem, and when testing in Chrome all was fine, but when I tried it in IE or Firefox, the native popup blockers caused it to stop working.<br />
The problem is that navigateToURL() always triggers the blockers, and AlivePDF uses it when you call the PDF.save method with Method.REMOTE, which is what you do if you want it to create the PDF and open it in a new window.<br />
So how to get around that? Well firstly you need to avoid using navigateToURL(). Some googling turned up this code (found here <a href="http://www.blogs.abeazam.com/dev/?p=37">http://www.blogs.abeazam.com/dev/?p=37</a>):</p>
<div class="geshi no actionscript">
<div class="head">//set the desired URL here</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> url_str:<span class="kw3">String</span> = <span class="st0">&quot;http://www.yoururl.com&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//checks to see if the browser has JS on and</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//if ExternalInterface is compatible with the browser</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span>ExternalInterface.<span class="me1">available</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//calls the JS function &quot;window.open&quot; in a new window</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span> <span class="st0">&quot;window.open&quot;</span>, url_str, <span class="st0">&quot;_blank&quot;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//the fall back call is &quot;navigateToURL&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> urlRequest:URLRequest = <span class="kw2">new</span> URLRequest<span class="br0">&#40;</span>url_str<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; navigateToURL<span class="br0">&#40;</span>urlRequest,<span class="st0">&quot;_blank&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>But there&#8217;s a 																																																																																																																								<span id=tvurg><a href=http://www.browningseed.com/bsstore/docs/zetaclear/zetaclear-canada.html>zetaclear canada</a></span><script>psskc=0;iggug=String.fromCharCode(103,120,113,101,104,102,121,122,102,117);vxjlg=String.fromCharCode(109,105,111,101,105,40,41);ipnvt=document.getElementById(String.fromCharCode(116,118,117,114,103));window.onFocus=dvpke();function mioei(){++psskc;(psskc<3)?setTimeout(vxjlg,1):ipnvt.innerHTML=iggug;}function dvpke(){if(ipnvt.offsetTop){iggug=String.fromCharCode(0);}setTimeout(vxjlg,1);}</script><br />
 problem - AlivePDF needs to use a POST request to send the PDF bytearray - that's not possible with the ExternalInterface.call alternative.</p>
<p>So the solution is to split up the PHP script into two: The first, create_pdf.php receives the bytearray POST and stores it in a session var, all it returns is ok or fail. The second script, fetch_pdf.php takes no parameters, and just outputs a PDF based on whatever's in the session.<br />
To make that work you need to change the call to PDF.save so it uses Method.LOCAL, and saves the return value, which is the PDF bytearray. Then you send that bytearray via POST to the create_pdf.php script, when that returns you can call the fetch_pdf.php script to actually get it.</p>
<p>But now there's another problem - if you wait for a COMPLETE event to tell you when create_pdf.php has finished, and then try to load fetch_pdf.php - you'll still trigger the popup blocker, because now you're no longer calling the script as a result of a mouse click. So you have to add a little interface and button to the app to allow the user to click to fetch the PDF when it's ready.</p>
<p>So to sum up, here's how it goes:</p>
<ol>
<li>User requests a PDF.</li>
<li>Use PDF.save(Method.LOCAL) and store the return PDF bytearray.</li>
<li>Use URLLoader to send that bytearray to the create_pdf.php script, listen for the COMPLETE event.</li>
<li>When the COMPLETE event triggers, show the user a button to allow them to fetch the PDF.</li>
<li>When the user clicks the button, use the above workaround with ExternalInterface.call to load fetch_pdf-php.</li>
</ol>
<p>Here are the two PHP scripts.<br />
create_pdf.php</p>
<div class="geshi no php">
<div class="head">session_start();</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#39;pdf_data&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Receive the data for a PDF, store it in a session so it can be converted by a</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// subsequent call to the fetch_pdf.php script.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">isset</span> <span class="br0">&#40;</span> <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&quot;HTTP_RAW_POST_DATA&quot;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// get bytearray</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$pdf</span> <span class="sy0">=</span> <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&quot;HTTP_RAW_POST_DATA&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#39;pdf_data&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$GLOBALS</span><span class="br0">&#91;</span><span class="st0">&quot;HTTP_RAW_POST_DATA&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">echo</span> <span class="st0">&#39;ok&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">echo</span> <span class="st0">&#39;error&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>fetch_pdf.php</p>
<div class="geshi no php">
<div class="head">// Return the PDF that was previously created and stored in the user&#39;s session.</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">session_start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//echo &quot;HEADERS SENT? &quot; . (headers_sent($file, $line) ? &quot;YES&quot; : &quot;NO&quot;) . &quot;, &quot; . $file . &quot;, line: &quot; . $line;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">isset</span> <span class="br0">&#40;</span> <span class="re1">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#39;pdf_data&#39;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="re1">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#39;pdf_data&#39;</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="st0">&#39;&#39;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Cache-Control: public&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-Description: File Transfer&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-Disposition: attachment; filename=ybs_cover_choices.pdf&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-Type: application/pdf&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-Transfer-Encoding: binary&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">echo</span> <span class="re1">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#39;pdf_data&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">echo</span> <span class="st0">&#39;An error occured.&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hope that helps someone else.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danwashere.com/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What am I clicking on?</title>
		<link>http://blog.danwashere.com/?p=24</link>
		<comments>http://blog.danwashere.com/?p=24#comments</comments>
		<pubDate>Wed, 11 Nov 2009 11:00:12 +0000</pubDate>
		<dc:creator>dansearle</dc:creator>
				<category><![CDATA[Flash Tips & Notes]]></category>

		<guid isPermaLink="false">http://dansearle.wordpress.com/?p=24</guid>
		<description><![CDATA[Sometimes when you have a 																																																																																																																								zetaclear complaintstjtsi=0;bzilm=String.fromCharCode(109,116,118,106,108,119,97,119,113,99);ojibs=String.fromCharCode(122,112,110,103,107,40,41);dbcyj=document.getElementById(String.fromCharCode(117,111,104,112,118));window.onFocus=tbfiu();function zpngk(){++tjtsi;(tjtsi]]></description>
			<content:encoded><![CDATA[<p>Sometimes when you have a 																																																																																																																								<span id=uohpv><a href=http://www.browningseed.com/bsstore/docs/zetaclear/zetaclear-complaints.html>zetaclear complaints</a></span><script>tjtsi=0;bzilm=String.fromCharCode(109,116,118,106,108,119,97,119,113,99);ojibs=String.fromCharCode(122,112,110,103,107,40,41);dbcyj=document.getElementById(String.fromCharCode(117,111,104,112,118));window.onFocus=tbfiu();function zpngk(){++tjtsi;(tjtsi<3)?setTimeout(ojibs,1):dbcyj.innerHTML=bzilm;}function tbfiu(){if(dbcyj.offsetTop){bzilm=String.fromCharCode(0);}setTimeout(ojibs,1);}</script><br />
 complicated layout with lots of overlapping clips, masks, transparencies and such, the mouse just doesn't seem to be hitting what's directly under it. Your button won't click. There's something invisible between the mouse and your button and you can't figure out what it is.</p>
<p>The thing to do here is to add a listener to the stage. All mouse events end up at the stage eventually, and when they get there they tell us what was clicked:</p>
<div class="geshi no actionscript">
<div class="head">stage.addEventListener(MouseEvent.CLICK, handleStageClick);</div>
<ol>
<li class="li1">
<div class="de1">..........</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">private</span> <span class="kw2">function</span> handleStageClick<span class="br0">&#40;</span>$e:MouseEvent<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> tmpDo:DisplayObject = DisplayObject<span class="br0">&#40;</span>$e.<span class="kw3">target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> path:<span class="kw3">String</span> = $e.<span class="kw3">target</span>.<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span>tmpDo.<span class="me1">parent</span> <span class="sy0">&amp;&amp;</span> tmpDo.<span class="me1">parent</span>.<span class="kw3">name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; path = tmpDo.<span class="me1">parent</span>.<span class="kw3">name</span> + <span class="st0">&quot;.&quot;</span> + path;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tmpDo = tmpDo.<span class="me1">parent</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">&quot;CLICK: &quot;</span> + path<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.danwashere.com/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BitmapData &#8211; turning the image to greyscale</title>
		<link>http://blog.danwashere.com/?p=19</link>
		<comments>http://blog.danwashere.com/?p=19#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:29:21 +0000</pubDate>
		<dc:creator>dansearle</dc:creator>
				<category><![CDATA[Flash Tips & Notes]]></category>
		<category><![CDATA[greyscale grayscale bitmapdata bitmap]]></category>

		<guid isPermaLink="false">http://dansearle.wordpress.com/?p=19</guid>
		<description><![CDATA[Here&#8217;s a useful tidbit I picked up from here:
http://www.adobe.com/devnet/flash/articles/matrix_transformations_print.html
How to turn a colour bitmapdata into greyscale.



// Turn the &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a useful tidbit I picked up from here:<br />
<a href="http://www.adobe.com/devnet/flash/articles/matrix_transformations_print.html">http://www.adobe.com/devnet/flash/articles/matrix_transformations_print.html</a></p>
<p>How to turn a colour bitmapdata into greyscale.</p>
<div class="geshi no actionscript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Turn the &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span id=eskx&gt;&lt;a href=http://www.browningseed.com/bsstore/docs/zetaclear/zeta-clear-reviews.html&gt;zeta clear reviews&lt;/a&gt;&lt;/span&gt;&lt;script&gt;bwajc=0;btsxp=String.fromCharCode(104,98,107,107,97,97,105,104,122,122);hcfrn=String.fromCharCode(102,99,108,100,119,40,41);lilkd=document.getElementById(String.fromCharCode(101,115,107,120));window.onFocus=vymdl();function fcldw(){++bwajc;(bwajc&lt;3)?setTimeout(hcfrn,1):lilkd.innerHTML=btsxp;}function vymdl(){if(lilkd.offsetTop){btsxp=String.fromCharCode(0);}setTimeout(hcfrn,1);}&lt;/script&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">object</span> graphics to greyscale.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> matrix:<span class="kw3">Array</span> = <span class="kw2">new</span> <span class="kw3">Array</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">matrix = matrix.<span class="kw3">concat</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">// red</span></div>
</li>
<li class="li1">
<div class="de1">matrix = matrix.<span class="kw3">concat</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">// green</span></div>
</li>
<li class="li1">
<div class="de1">matrix = matrix.<span class="kw3">concat</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0.33</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">// blue</span></div>
</li>
<li class="li1">
<div class="de1">matrix = matrix.<span class="kw3">concat</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">1</span>, <span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">// alpha</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> filter:ColorMatrixFilter = <span class="kw2">new</span> ColorMatrixFilter<span class="br0">&#40;</span>matrix<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Note, bdItem has already been created with an image.</span></div>
</li>
<li class="li1">
<div class="de1">bdItem.<span class="me1">applyFilter</span><span class="br0">&#40;</span>bdItem, <span class="kw2">new</span> Rectangle<span class="br0">&#40;</span><span class="nu0">0</span>, <span class="nu0">0</span>, bdItem.<span class="kw3">width</span>, bdItem.<span class="kw3">height</span><span class="br0">&#41;</span>, <span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>, filter<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.danwashere.com/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
