tag:blogger.com,1999:blog-9692803700881928282023-06-20T13:44:11.374+01:00Just FlexOleg Filipchukhttp://www.blogger.com/profile/05442503082101348313noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-969280370088192828.post-47812248439816800042008-07-15T21:12:00.006+01:002008-07-15T22:21:13.775+01:00Debug version of Flash Player 10 - 10.0.0.525It was quite inconvenient to test all Flash Player 10's goodies with non debug version of player. I remember that every version of Flex SDK has installers of FP in it. So I've looked at SVN repository of opensource.adobe.com and, oh my... it is here!!!<br />Here it is the link: <a href="http://opensource.adobe.com/svn/opensource/flex/sdk/tags/trunk_4.0.0.2432/in/player/10/">Flash Player 10.0.0.525</a><br /><br />I haven't tested versions for Windows and Linux, but Mac version didn't seem to install at the beginning and just told me that I've already had newer version installed. I took a look at installer script and there was a wrong version specified.<br /><br />So here is guide how to install it on Mac OS X:<br />1. Download <a href="http://opensource.adobe.com/svn/opensource/flex/sdk/tags/trunk_4.0.0.2432/in/player/10/mac/Install%20Flash%20Player%2010%20UB.dmg">Install Flash Player 10 UB.dmg</a> file<br />2. Mount it and copy Adobe Flash Player.pkg to Desktop<br />3. Right click on Adobe Flash Player.pkg and select Show Package Contents from contexts menu<br />4. Locate Info.plist and open it with any suitable editor ( TextMate for example)<br />5. Replace "<string>9.0.45</string>" on line 14 to "<string>10.0.0.525</string>"<br />6. Replace "<integer>9</integer>" on line 16 to "<integer>10</integer>"<br />7. Save it, you will be prompted to overwrite it - confirm it.<br />8. That's all folks - double click on Adobe Flash Player.pkg and install it ( Do not forget to uninstall any previous version of Flash player before installing)<br /><br />Have fun,<br />OlegOleg Filipchukhttp://www.blogger.com/profile/05442503082101348313noreply@blogger.com1tag:blogger.com,1999:blog-969280370088192828.post-7464926551130031482008-06-10T12:37:00.012+01:002009-05-04T17:21:08.062+01:00Swfobject 2.1 Flex template. HistoryManager and DeepLinking supported as well<span style="font-family:trebuchet ms;">[UPDATE] I've updated template to SWFObject 2.1<br />And there is a bit smarter way to register flexApplication with BrowserHistory:<br /><br /></span><div style="margin: 0pt auto; width: 95%;"> <div class="javascript" style="border: 1px solid rgb(208, 208, 208); color: rgb(0, 0, 102); background-color: rgb(240, 240, 240);font-family:monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> flashvars <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">{</span><br />name1<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"hello"</span><span style="color: rgb(51, 153, 51);">,</span><br />name2<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"world"</span><span style="color: rgb(51, 153, 51);">,</span><br />name3<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"foobar"</span><br /><span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span><br /><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> params <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">{</span><br />menu<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"false"</span><br /><span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span><br /><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> attributes <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">{</span><br />id<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"${application}"</span><span style="color: rgb(51, 153, 51);">,</span><br /><span style="color: rgb(0, 0, 102);">name</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">"${application}"</span><br /><span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span><br /><br />swfobject.<span style="color: rgb(0, 102, 0);">embedSWF</span> <span style="color: rgb(0, 153, 0);">(</span> <span style="color: rgb(51, 102, 204);">"${swf}.swf"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"${application}_div"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"${width}"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"${height}"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"${version_major}"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"expressInstall.swf"</span><span style="color: rgb(51, 153, 51);">,</span> flashvars<span style="color: rgb(51, 153, 51);">,</span> params<span style="color: rgb(51, 153, 51);">,</span> attributes <span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><br />swfobject.<span style="color: rgb(0, 102, 0);">addLoadEvent</span><span style="color: rgb(0, 153, 0);">(</span>loadEventHandler<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><br /><span style="color: rgb(0, 51, 102); font-weight: bold;">function</span> loadEventHandler<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span><br />BrowserHistory.<span style="color: rgb(0, 102, 0);">flexApplication</span> <span style="color: rgb(51, 153, 51);">=</span> swfobject.<span style="color: rgb(0, 102, 0);">getObjectById</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"${application}"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><br /><span style="color: rgb(0, 153, 0);">}</span></div> </div><br /><br /><br /><span style="font-family:trebuchet ms;">I have been using Geoff Stearns' SWFObject for a long time. I think it will be useful to share my index.template.html that tuned for using with SWFObject <s>2</s> 2.1. I was inspired with Ted Patrick's </span><a style="font-family: trebuchet ms;" href="http://www.onflex.org/ted/2007/08/fxwidget-flex-swf-swfobject-custom-html.php">FXWidget</a><span style="font-family:trebuchet ms;"> project that uses SWFObject 1.5 for embedding flex content to html page. So now it supports HistoryManager and DeepLinking.<br /><s>I've made few little changes in history.js to let content embed with SWFObject work with HistoryManager and Deeplinking - I've replaced 'embed' with 'object' at lines 115 and 131 due to the fact that </s></span><s><a href="http://code.google.com/p/swfobject/wiki/documentation" style="font-family: trebuchet ms;" id="STEP_1:_Embed_both_Flash_content_and_alternative_content_using_s">SWFObject's base markup uses the nested-objects method</a></s><span style="font-family:trebuchet ms;">. </span><br /><br /><a style="font-family: trebuchet ms;" href="http://www.projectroom.tv/docs/SWFObjectFlexTemplate_2.1.zip">Project Archive [updated - 07-07-2008] ( broken link has been fixed)</a><br /><br /><br /><span style="font-family:trebuchet ms;">Have fun with it!</span><br /><span style="font-family:trebuchet ms;">Cheers!</span>Oleg Filipchukhttp://www.blogger.com/profile/05442503082101348313noreply@blogger.com12tag:blogger.com,1999:blog-969280370088192828.post-10669013671148201892008-05-25T17:27:00.009+01:002008-06-10T13:22:05.448+01:00Air update manager<span style="font-family:trebuchet ms;"> I had to implement update mechanism into one of my Air applications. </span><span style="font-family:trebuchet ms;">After searching in Flex help and googling the only reasonable solution I've found was one from </span><a style="font-family: trebuchet ms;" href="http://blog.everythingflex.com/air-central/everythingflexair1swc/updatemanager/">Rich Tretola (everythingflex.com)</a><span style="font-family:trebuchet ms;">. It is really easy to use library but with that simplicity I missed some freedom while using it:</span><br /><ol><li>no events - main application that uses Rich's UpdateManager doesn't know if update required or not, if UpdateManager started downloading update etc...</li><li>notifying user about update file downloading progress</li></ol><span style="font-family:trebuchet ms;">So I've decided to write my own UpdateManager and there is the result:</span><br /><ul style="font-family: trebuchet ms;"><li><a href="http://projectroom.cloud17.com/resources/download/AirUpdateManager.zip">Source</a></li><li><a href="http://projectroom.cloud17.com/resources/download/AirUpdateManager.swc">SWC</a></li><li><a href="http://projectroom.cloud17.com/resources/download/GetLatestVersion.xml">Sample XML</a></li></ul><span style="font-family:trebuchet ms;">The API is quite simple</span><br /><ol style="font-family: trebuchet ms;"><li>Constructor has 3 arguments</li><ol><li>_versionXmlUrl: String</li><li>autoUpdate: Boolean = true ( optional)</li><li>autoCheck: Boolean = false (optional)</li></ol><li>Public methods:</li><ol><li>checkForUpdate (): void<br /></li><li>update (): void</li></ol><li>Events:</li><ol><li>public static const EVENT_UPDATE_AVAILABLE: String;</li><li>public static const EVENT_UPDATE_DOWNLOAD_STARTED: String;</li><li>public static const EVENT_UPDATE_DOWNLOAD_COMPLETE: String;</li><li>public static const EVENT_UPDATE_DOWNLOAD_PROGRESS: String;</li><li>public static const EVENT_UPDATE_NOT_REQUIRED: String;</li><li>public static const EVENT_UPDATE_FAULT: String;</li></ol><li>Read only properties:</li><ol><li>get currentVersionString (): String</li><li>get newVersionString (): String</li><li>get updateType (): String - critical, major, minor</li><li>get updateMessage (): String</li><li>get bytesLoaded (): int</li><li>get bytesTotal (): int<br /></li></ol></ol><span style="font-family:trebuchet ms;"><br />Simple (silent update) example:<br /><pre style="padding: 0pt 0pt 20px; width: 500px; overflow-x: auto; overflow-y: hidden;font-family:courier new;font-size:12px;"><mx:WindowedApplication xmlns:mx="<span style="color:magenta;">http://www.adobe.com/2006/mxml</span>"<br />layout="<span style="color:magenta;">absolute</span>"<br />creationComplete="<span style="color:magenta;">doInit ()</span>"/><br /><br /><mx:Script><br /><![CDATA[<br /><span style="color:blue;">import</span> com.cloud17.air.managers.UpdateManager;<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">var</span> um: UpdateManager;<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> doInit(): <span style="color:blue;">void</span><br />{<br /> um = <span style="color:blue;">new</span> UpdateManager ( "<span style="color:magenta;">http://mysite.com/air/getlatestversion.xml</span>", <span style="color:blue;">true</span>, <span style="color:blue;">true</span> );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_FAULT, <span style="color:olive;">start</span> );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_NOT_REQUIRED, <span style="color:olive;">start</span> );<br /><br />}<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> <span style="color:olive;">start</span> ( evt: Event = <span style="color:blue;">null</span> ): <span style="color:blue;">void</span><br />{<br /> <span style="color:green;">//main app logic</span><br />}<br />]]><br /></mx:Script><br /><mx:WindowedApplication></pre><br /><br />Complex example:<br /><pre style="padding: 0pt 0pt 20px; width: 500px; overflow-x: auto; overflow-y: hidden;font-family:courier new;font-size:12px;"><mx:WindowedApplication xmlns:mx="<span style="color:magenta;">http://www.adobe.com/2006/mxml</span>"<br />layout="<span style="color:magenta;">absolute</span>"<br />creationComplete="<span style="color:magenta;">doInit ()</span>"/><br /><mx:Script><br /><![CDATA[<br /><span style="color:blue;">import</span> com.cloud17.air.managers.UpdateManager;<br /><span style="color:blue;">import</span> com.justversus.controls.ProgressWindow;<br /><span style="color:blue;">import</span> com.justversus.utils.Prompt;<br /><span style="color:blue;">import</span> mx.managers.PopUpManager;<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">var</span> um: UpdateManager;<br /><span style="color:blue;">private</span> <span style="color:blue;">var</span> progressWindow: ProgressWindow;<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> doInit(): <span style="color:blue;">void</span><br />{<br /> um = <span style="color:blue;">new</span> UpdateManager ( "<span style="color:magenta;">http://mysite.com/air/getlatestversion.xml</span>", <span style="color:blue;">false</span>, <span style="color:blue;">true</span> );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_AVAILABLE, updateAvailableHandler );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_DOWNLOAD_STARTED, updateDownloadStartedHandler );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_DOWNLOAD_PROGRESS, updateDownloadProgressHandler );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_DOWNLOAD_COMPLETE, updateDownloadCompleHandler );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_FAULT, <span style="color:olive;">start</span> );<br /> um.<span style="color:olive;">addEventListener</span> ( UpdateManager.EVENT_UPDATE_NOT_REQUIRED, <span style="color:olive;">start</span> );<br /><br />}<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> updateAvailableHandler ( evt: Event ): <span style="color:blue;">void</span><br />{<br /> Prompt.<span style="color:olive;">show</span>( "<span style="color:magenta;">You have installed </span>" + um.currentVersionString + "<span style="color:magenta;"> version of application. \n</span>" +<br /> "<span style="color:magenta;">Would you like to update your application to </span>" + um.newVersionString + "<span style="color:magenta;">?\n\n</span>" + um.updateMessage,<br /> "<span style="color:magenta;">New version available -- </span>" + um.newVersionString, doUpdate );<br />}<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> doUpdate(): <span style="color:blue;">void</span><br />{<br /> um.update();<br />}<br /><br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> updateDownloadStartedHandler ( evt: Event ): <span style="color:blue;">void</span><br />{<br /> progressWindow = PopUpManager.createPopUp ( <span style="color:olive;">this</span>, ProgressWindow, <span style="color:blue;">true</span> ) as ProgressWindow;<br /> progressWindow.title = "<span style="color:magenta;">Updating application...</span>";<br /> PopUpManager.centerPopUp( progressWindow );<br />}<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> updateDownloadCompleHandler ( evt: Event ): <span style="color:blue;">void</span><br />{<br /> PopUpManager.removePopUp( progressWindow );<br />}<br /><br /><span style="color:blue;">private</span> <span style="color:blue;">function</span> updateDownloadProgressHandler ( evt: Event ): <span style="color:blue;">void</span><br />{<br /> progressWindow.setProgress ( um.bytesLoaded, um.bytesTotal );<br />}<br /><br /><br /><br /><span style="color:blue;">public</span> <span style="color:blue;">function</span> <span style="color:olive;">start</span>( event: Event = <span style="color:blue;">null</span>): <span style="color:blue;">void</span><br />{<br /> <span style="color:green;">//do some application logic</span><br /><br />}<br />]]><br /></mx:Script><br /><mx:WindowedApplication></pre><br />Feel free to use it...</span><br /><span style="font-family:trebuchet ms;"> </span>Oleg Filipchukhttp://www.blogger.com/profile/05442503082101348313noreply@blogger.com0