﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-咖啡伴侣-随笔分类-Flex</title><link>http://www.blogjava.net/oathleo/category/30440.html</link><description>呆在上海</description><language>zh-cn</language><lastBuildDate>Tue, 06 Dec 2011 18:01:03 GMT</lastBuildDate><pubDate>Tue, 06 Dec 2011 18:01:03 GMT</pubDate><ttl>60</ttl><item><title>遇到1个问题，解决一个问题</title><link>http://www.blogjava.net/oathleo/archive/2011/12/05/365606.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Mon, 05 Dec 2011 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2011/12/05/365606.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/365606.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2011/12/05/365606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/365606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/365606.html</trackback:ping><description><![CDATA[1.遇到的问题：flex全屏下，使用<br /><div>http://www.blogjava.net/oathleo/archive/2011/11/29/365125.html</div>的方法，无法解决右键菜单自定义了<br /><br />2.解决的问题<br />flex里使用了flex ---》eval js&nbsp; ---》回调flex对象注册方法 <br />其中js回调 flex对象上注册方法时<br />IE下可以直接使用&nbsp; objectID.方法名&nbsp; 来调用，FF下不行<br /><br />原来FF下是使用document.getElementById('"+ objectID +"') 来找到flex对象的，IE也兼容该方法<img src ="http://www.blogjava.net/oathleo/aggbug/365606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2011-12-05 17:09 <a href="http://www.blogjava.net/oathleo/archive/2011/12/05/365606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex自定义右键菜单-2实现自定义菜单</title><link>http://www.blogjava.net/oathleo/archive/2011/11/29/365125.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Tue, 29 Nov 2011 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2011/11/29/365125.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/365125.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2011/11/29/365125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/365125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/365125.html</trackback:ping><description><![CDATA[实现第一步，屏蔽默认菜单后：<br /><div><a href="http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html">http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html</a><br />接下来就是实现自定义菜单了<br /><br />先看结果：<br /><img src="http://www.blogjava.net/images/blogjava_net/oathleo/world.png" alt="" border="0" /><img alt="" src="http://www.blogjava.net/images/blogjava_net/oathleo/Capture-1.png" height="301" width="325" /><br /><br />就实现了两层，没有考虑多层菜单，菜单项用简单的button实现，感觉还行<br /><br />主要的代码如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;var&nbsp;titleWindow:Group;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;var&nbsp;pointNameGroupMenu:VGroup;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;var&nbsp;secondMenu:VGroup;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;function&nbsp;hiddenPopupMenu():</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(titleWindow&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PopUpManager.removePopUp(titleWindow);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointNameGroupMenu&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secondMenu&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;function&nbsp;showPopupMenu(allInterestPointNames:HashSet,physical_x:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">,physical_y:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">):</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(allInterestPointNames.size&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;prepareDetailMenu(physical_x,physical_y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Group();&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow.x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;physical_x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow.y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;physical_y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointNameGroupMenu&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;VGroup();&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointNameGroupMenu.gap&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointNameGroupMenu.horizontalAlign&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">contentJustify</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow.addElement(pointNameGroupMenu);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allInterestPointNames.forEach(function(_node:String):</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_point_name:Button&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Button();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_point_name.label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_node;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointNameGroupMenu.addElement(_point_name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_point_name.addEventListener(MouseEvent.MOUSE_OVER,showSecondMenu);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PopUpManager.addPopUp(titleWindow,&nbsp;viewer,&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;function&nbsp;prepareDetailMenu(_x:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">,_y:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">):VGroup{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;detailGroup:VGroup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;VGroup();&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.gap&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.horizontalAlign&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">contentJustify</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_button_point_info:Button&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Button();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_button_point_info.label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ResourceUtil.getString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">gview_popup_pointinfo</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.addElement(_button_point_info);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_button_point_trend:Button&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Button();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_button_point_trend.label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ResourceUtil.getString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">gview_popup_trend</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detailGroup.addElement(_button_point_trend);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;detailGroup;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;function&nbsp;showSecondMenu(evt:MouseEvent):</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_evt_target:Button&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Button(evt.target);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_index:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pointNameGroupMenu.getChildIndex(_evt_target);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(secondMenu&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secondMenu&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;prepareDetailMenu(pointNameGroupMenu.measuredWidth,_evt_target.height&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;_index);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleWindow.addElement(secondMenu);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secondMenu.y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_evt_target.height&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;_index;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br /></div><img src ="http://www.blogjava.net/oathleo/aggbug/365125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2011-11-29 16:35 <a href="http://www.blogjava.net/oathleo/archive/2011/11/29/365125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex自定义右键菜单-1屏蔽默认菜单</title><link>http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Mon, 28 Nov 2011 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/365009.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/365009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/365009.html</trackback:ping><description><![CDATA[不要试图改变flash插件自带的右键菜单，没有办法解决<br />自带的右键菜单坏处大大<br />1.不能去掉默认的几项（关于）<br />2.不能实现多层<br /><br />只能使用js屏蔽掉默认右键事件，然后弹出自己的右键菜单来实现<br />搜索了半天，找了个可行的方案，实现第一步：<br />1.屏蔽默认菜单，并响应右键事件<br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">var&nbsp;RightClick&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;Constructor<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;init:&nbsp;function&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashObjectID&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">customRightClick</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashContainerID&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">flashcontent</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.Cache&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashObjectID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(window.addEventListener){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.addEventListener(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">mousedown</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.onGeckoMouse(),&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashContainerID).onmouseup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;function()&nbsp;{&nbsp;document.getElementById(RightClick.FlashContainerID).releaseCapture();&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.oncontextmenu&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;function(){&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(window.event.srcElement.id&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;RightClick.FlashObjectID)&nbsp;{&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{&nbsp;RightClick.Cache&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">nan</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;&nbsp;}}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashContainerID).onmousedown&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;RightClick.onIEMouse;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;GECKO&nbsp;/&nbsp;WEBKIT&nbsp;event&nbsp;overkill<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;{Object}&nbsp;eventObject<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;killEvents:&nbsp;function(eventObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(eventObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(eventObject.stopPropagation)&nbsp;eventObject.stopPropagation();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(eventObject.preventDefault)&nbsp;eventObject.preventDefault();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(eventObject.preventCapture)&nbsp;eventObject.preventCapture();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(eventObject.preventBubble)&nbsp;eventObject.preventBubble();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;GECKO&nbsp;/&nbsp;WEBKIT&nbsp;call&nbsp;right&nbsp;click<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;{Object}&nbsp;ev<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;onGeckoMouse:&nbsp;function(ev)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;function(ev)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(ev.button&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightClick.killEvents(ev);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(ev.target.id&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;RightClick.FlashObjectID&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;RightClick.Cache&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;RightClick.FlashObjectID)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightClick.call();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightClick.Cache&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ev.target.id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;IE&nbsp;call&nbsp;right&nbsp;click<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;{Object}&nbsp;ev<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;onIEMouse:&nbsp;function()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(event.button&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(window.event.srcElement.id&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;RightClick.FlashObjectID&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;RightClick.Cache&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;RightClick.FlashObjectID)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightClick.call();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(RightClick.FlashContainerID).setCapture();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(window.event.srcElement.id)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RightClick.Cache&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;window.event.srcElement.id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Main&nbsp;call&nbsp;to&nbsp;Flash&nbsp;External&nbsp;Interface<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'flexview_rightClick'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;call:&nbsp;function()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.FlashObjectID).flexview_rightClick();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;!</span><span style="color: #000000; ">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">html</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">head</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">meta&nbsp;http</span><span style="color: #000000; ">-</span><span style="color: #000000; ">equiv</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Content-Type</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;content</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/html;&nbsp;charset=utf-8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">title</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">TEST</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">title</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">script&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;src</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">swfobject.js</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;&lt;/</span><span style="color: #000000; ">script</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">script&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;src</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">rightClick.js</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;&lt;/</span><span style="color: #000000; ">script</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">head</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">body&nbsp;onload</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">RightClick.init();</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">div&nbsp;id</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">flashcontent</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">Flash&nbsp;Player&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;required</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">div</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">script&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;so&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SWFObject(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">RightClickAS3.swf</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">customRightClick</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">560</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">420</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">9</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">#CCCCCC</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">quality</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">high</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">customRightClick</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">id</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">customRightClick</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">AllowScriptAccess</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">always</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">wmode</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">opaque</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addParam(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">menu</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">false</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.addVariable(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">variable1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">value1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;so.write(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">flashcontent</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">script</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">body</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">html</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp; <br /></span></div><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;flash.display.</span><span style="color: #000000; ">*</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;flash.external.ExternalInterface;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;RightClick&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;Sprite<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;function&nbsp;RightClick()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;methodName:String&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">flexview_rightClick</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;method:Function&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;onRightClick;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExternalInterface.addCallback(methodName,&nbsp;method);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;function&nbsp;onRightClick():</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;mx:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;stage.mouseX;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;my:</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;stage.mouseY;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(mx&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;my);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(my</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;my&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stage.stageHeight&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;mx</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;mx&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stage.stageWidth)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;YOUR&nbsp;CODE&nbsp;HERE</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><img src ="http://www.blogjava.net/oathleo/aggbug/365009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2011-11-28 17:01 <a href="http://www.blogjava.net/oathleo/archive/2011/11/28/365009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java + Flex + BlazeDS 入门</title><link>http://www.blogjava.net/oathleo/archive/2011/11/04/Java_Flex_BlazeDS.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 04 Nov 2011 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2011/11/04/Java_Flex_BlazeDS.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/362701.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2011/11/04/Java_Flex_BlazeDS.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/362701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/362701.html</trackback:ping><description><![CDATA[网上也烂了，自己做 还是浪费一天<br /><br />教程就不写了，直接写经验<br /><br />1.平台<div>flash builder4 + eclipse-jee-galileo （也就是3.5，jee集成了web插件，反正用的不多）<br /><div><br />官网下的flash builder4 安装时，选内置的eclipse，死活建不了BlazeDS项目。没心思研究了，以后就按照这个平台来吧。<br /><br />直接使用这个平台建flex项目，设定server，直接生成，简单<br /><br />2.AS里<br /><div>RemoteObject 在sdk里面竟然有2个....</div><div>mx.rpc.remoting.RemoteObject api里调用，无法成功<br /><div><div>mx.rpc.remoting.mxml.RemoteObject 成功<br /><br />3.java数组直接amf成 object<br /><br />4.as的hashset ，拔了个开源的，不错<br /><div>a3lbmonkeybrain.brainstem.collections</div></div></div></div></div></div><img src ="http://www.blogjava.net/oathleo/aggbug/362701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2011-11-04 17:05 <a href="http://www.blogjava.net/oathleo/archive/2011/11/04/Java_Flex_BlazeDS.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入Flex4 -- 了解Element和Child的异同 转</title><link>http://www.blogjava.net/oathleo/archive/2011/10/14/361252.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 14 Oct 2011 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2011/10/14/361252.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/361252.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2011/10/14/361252.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/361252.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/361252.html</trackback:ping><description><![CDATA[<div><div>     <div>&nbsp;</div>     <h3>       <a href="http://bigt.iteye.com/blog/764430">深入Flex4 -- 了解Element和Child的异同</a>       <em>      </em>     </h3> </div> <br />当我了解到Flex4那些对我诸多裨益的新特性后,  我便决定转而使用它。刚开始的时候，我试图利用在Flex前作中的认识和既有经验来快速进入状态。但很快我便发现有时即使面对一些显而易见的问题我也不得 不求助于API文档或者运行一些示例程序来弄清这种问题的来龙去脉。根据以往经验，Flex3  的Halo在处理显示列表的时候隐藏了大量的实现细节和不良设计。然而一旦你开始使用新的Spark架构后，你就得以近距离的面对这些实现细节&#8212;Halo 究竟在私底下干了什么，而且你会体会到为什么说Spark对于显示列表的处理更为&#8220;直白&#8221;。 <br /> <br />&#8220;elements&#8221;是一个关键性的问题。elements是何物？它同child是否是一回事？刚开始的时候我曾武断的认为elements不 过是children的另一种说法。通过反复梳理组件中所有的elements和children，我发觉在新的容器类（也包括一些经过改良的传统容器） 某些似乎是理所当然应该具备的方法消失了。如果没有getElements()，我该如何获取elements的数目呢？我能否把 getChildren() 的返回结果作为IVisualElement来对待。这令我十分纠结。 <br /> <br />困扰的我于是开始认真阅读学习API文档，Flex的源码以及相关的博客文章。我也曾尝试解读一些博主发布的关于Flex4新特性的幻灯片。然而事实证明脱离讲解而孤立的看幻灯片作用相当有限。 <br /> <br />最后，我拼凑了一些言简意赅的示例。这些示例将带领我了解有关elements的全新知识，告诉我那些在新的Spark容器背后发生的故事。 <br /> <br />言归正传，首先从问题开始。问题一，&#8220;应该如何获得Spark  容器的全部elements？&#8221;我曾想当然的认为是通过一个类似Flex3中的getChildren()  的方法。然而实际上我们需要通过两个Property来达到这个目的：numElements &amp; numChildren  。可以通过对numElements计数的循环语句配合getElementAt()  来实现遍历容器elements或特定访问。这种方式还比较直观。问题二，&#8220;element和child的区别何在？&#8221;，让我们来看看两者的差异。 <br /> <br />语义上，element简单的说就是实现了IVisualElement接口的任意型别。child是指扩展了DisplayObject类的任 意型别。判断某个组件是element还是child亦或两者都是的关键在于以下几点。UIComponent(所有Flex组件的基类：译者注)是由 DisplayObject扩展而来，故所有UIComponent都是DisplayObject，也就是说UIComponent都是 children。UIComponent同时也实现了IVisualElement接口，因而所有的UIComponent也可以被作为 elements看待。但这并不是说所有的DisplayObjects（文中所言的DisplayObject一般指扩展于DisplayObject 的子类，译者注）都是elements。容器中的DisplayObject对象是该无疑是容器的child。而只有当此DisplayObject对象 同时也实现了IVisualElement接口时它才是容器的element。那么对容器而言，DisplayObject什么情况下是child，什么 情况下又是element？通过示例来认识这个问题。 <br /> <br />在首个示例中，我们使用了传统的Halo容器（这里我们使用的Panel）。Panel扩展与DisplayObject类，所以它可以使用 addChild()  方法。进一步而言，Panel也是Container类的子类（mx.core.Container实现了 IVisualElementContainer接口），它具有addElement()  方法。Container类的IVisualElementContainer接口实现只是基于显示列表API的门面，所以理论上它和同样实现了 IVisualElementContainer接口的新式Spark容器具有相同的方法集合。 <br /> <br /> <br /> <br />于是看起来我们可以任意添加children或element到容器中了。事实却不是这样。并非任意型别的element都能被添加（此处 element泛指实现了IVisualElement接口的类）容器中。视觉元素（VisualElements）和图形元素 （GraphicElements）有一些区别视觉元素（VisualElements）实现了IVisualElement接口，而图形元素 （GraphicElements）实现的是IVisualElement接口的子接口IGraphicElement。IGraphicElement 接口扩展的新特性为容器获取信息提供了额外渠道。某些elements（图形元素是其中之一）无法直接添加至Halo的Panel编译器会告知&#8220;这样的对 象需事先包装进一个Group容器中&#8221;（实际上错误提示应该是在运行时出现，不关编译器什么事：译者注）。原因马上揭晓。 <br /> <br />接下来的示例中，Panel中有若干个UIComponent，其中包括另一个Halo Panel，一个Spark Panel，几个Halo  Button和几个Spark Button，以及一个包含有子组件的SkinnableContainer（注意:  包含于SkinnableContainer的组件是只属于SkinnableContainer的children，不是上级容器Panel的 children）。所有组件都继承于DisplayObject，所以它们都是&#8220;children&#8221;。点击&#8220;show  children&#8221;后可以清楚的了解这一点。进一步而言，所有的组件也都是&#8220;element&#8221;，因为UIComponent实现了 IVisualElement接口。 <br /> <br />看下一个示例。这次我们探讨的容器上Spark Group。与前Halo  Panel类似，Group继承于DisplayObjectContainer，它具有addChild()  方法，它同时也实现了IVisualElement接口，所以我们可以用addElement()  方法来IVisualElement对象（elements）。而且Group也接受图形元素（GraphicElements）,比如 spark.primitives.Rect。要知道Rect是无法直接添加到Halo  Panel中的。Group是怎么做到这一点的？原因就在于Group知道如何使用一种优化的方式来呈现图形元素（GraphicElements）。什 么意思？往下读。 <br /> <br />相对于典型的视觉元素（VisualElements），图形元素（GraphicElements）与容器的关系更为紧密。其关键在于 IGraphicElement接口。上面曾经提到，这个扩展于IVisualElement的接口（此即图形元素（GraphicElements）可 以通过Group的addElement()  方法来添加至其上的原因所在）。然而由于图形元素（GraphicElements）不是DisplayObject，所以他们在被&#8220;投映&#8221;到某个作为他 父对象的DisplayObject前是无法被显示出来的。基于这个原因，当添加一个&#8220;Rectangle&#8221;到Group时，需要有 DisplayObject来绘制这个Rectangle。更有效率一点的做法是Group尽可能的复用同一个DisplayObject来绘制多个图形 元素（GraphicElements）。容器可以使用任何实现了ISharedDisplayObject接口的DisplayObject来绘制图形 元素（GraphicElements）。第一个示例中的Halo  Panel无法使用这种方式来绘制图形元素（GraphicElements），编译器会报错：&#8220;必须将其包装至一个合适的容器中&#8221;。而Group支持这 种优化方式，所以能添加图形元素（GraphicElements）。 <br /> <br />另外需要注意的一点是，有些图形元素（GraphicElements）的绘制由Group提供DisplayObject来完成，也有的是自行 创建专属的DisplayObject来完成绘制。IGraphicElement接口甚至允许把对象自己创建的DisplayObject交由容器管理 （换而言之就是以child形态添加的DisplayObject会以IGraphicElement的面貌来绘制自己）。 <br /> <br />这意味着什么？这意味着在接下来的示例中，children的数目和elements的数目是不一样的。这个示例使用了与第一个示例相同的组件集 合外，还增加了4个矩形图形元素（GraphicElements）。所有子对象皆为IVisualElement，但不是都可以称为children。 几个矩形是图形元素（GraphicElements），它们并不继承于DisplayObject。Group不在乎这点，它知道添加 DisplayObject来绘制这些图形元素（GraphicElements）。由于几个矩形的尺寸和角度有所不同，所以Group会创建2个新的 DisplayObject来绘制这4个矩形。很酷吧！ <br /> <br /> <br /> <br />现在来看示例三。我们用一个SkinnableContainer替换先前的Group。SkinnableContainer有和先前相同的子 组件集，它还能利用Skin来增强视觉效果。Skin是SkinnableContainer唯一的child。SkinnableContainer的 默认Skin类由一个矩形和一个被称为ContentGroup的Group组成。该Group的作用在于规划出容器内组件的添加位置。 <br /> <br />这个示例证明了这样的事实，即使SkinnableContainer拥有10个elements，但它只有唯一的child：它自己的 Skin。而且这个Skin也只有唯一的child：名为ContentGroup的Group组件。你也许会感到奇怪：为什么Skin的 children不是2个：其一是ContentGroup，另一个是用于绘制作为边框的Rectangle的DisplayObject？这是因为 Skin类继承自Group类，而Group只在它确实需要绘制其包容的图形元素（GraphicElements）时才会添加 DisplayObject，目前的情况下不需要。Skin类具备直接在其上绘制Rect图形元素（GraphicElements）的能力，这归功于 Skin类的上级类Group实现了ISharedDisplayObject接口。这意味着它在需要时能作为共享的DisplayObject来绘制图 形元素（GraphicElements）。Skin负责管理用于呈现图形元素（GraphicElements）的DisplayObject，在当前 示例中，Skin自己就是用于绘制的DisplayObject！如果你的自定义Skin中有其它的Rectangle，并将该Skin赋予 SkinnableContainer，这种情况下Skin会判断是否需要更多的DisplayObject来绘制额外的Rectangle。这时你可能 会发现在Skin的children列表中有更多的child。 <br /> <br />值得注意的是，示例中SkinnableContainer，它的Skin以及Skin的ContentGroup这三者的element列表的 数目是相同的。通过SkinnableContainer的源码可以知道，numElement的值实际上来源于与之对应的 CurrentContentGroup的numElement。所以基本上对SkinnableContainer的elements的检索是被重定向 到它的ContentGroup上的。SkinnableContainer的Skin也有类似行为。它继承于Group，Group的 numElement的值取自其内部的mxmlContent属性。该属性是一个保存了Group可视内容children的数组。这两个属性与 Panel的RawChildren属性十分相似，它用于返回Panel上的所有children而不是getChildren()方法返回的仅仅你添加 到Panel上的那些。 <br /> <br /> <br /> <br />通过以上阅读，也许起不到拨云见日的效果。但可以让你明白厘清以下七个类/接口的继承结构和相互关系是十分有必要的： <br />1. DisplayObject <br />2. UIComponent <br />3. Container <br />4. IVisualElement <br />5. IGraphicElement <br />6. IVisualElementContainer <br />7. ISharedDisplayObject <br /> <br />一旦你掌握它们之间的关系，你就能明白elements 和children的不同。可以肯定的是我在某些问题的认识和阐述上存在很多谬误之处。如果你发现了这样的问题望不吝赐教，在评论处写下您的正确观点吧。 <br /> </div><img src ="http://www.blogjava.net/oathleo/aggbug/361252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2011-10-14 11:05 <a href="http://www.blogjava.net/oathleo/archive/2011/10/14/361252.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Application初始化顺序 转</title><link>http://www.blogjava.net/oathleo/archive/2009/11/18/302813.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Wed, 18 Nov 2009 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2009/11/18/302813.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/302813.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2009/11/18/302813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/302813.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/302813.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/oathleo/archive/2009/11/18/302813.html'>阅读全文</a><img src ="http://www.blogjava.net/oathleo/aggbug/302813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2009-11-18 16:15 <a href="http://www.blogjava.net/oathleo/archive/2009/11/18/302813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 点滴（转）</title><link>http://www.blogjava.net/oathleo/archive/2009/06/10/281188.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Wed, 10 Jun 2009 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2009/06/10/281188.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/281188.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2009/06/10/281188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/281188.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/281188.html</trackback:ping><description><![CDATA[
		<p>今天折腾了大半天Flash与Flex3的配合，特总结一下心得体会：<br />1） 如果是通过Embed来嵌入swf的话，Flex3只支持FlashCS2所创建的swf.<br />2) 如果是通过loader来加载的话，只有AS3的swf才能在加载后被控制（这和第一点相反，我花了很长时间才弄明发现这两点，汗！）<br />3） 如果要直接加载到Flex当中，类必须继承UIComponent，这好比在Flash中必须继承DisplayObject<br />4)
如果要把Flash的组建打包给Flex使用，应该使用FlexComponentKit，把MC导出成swc。然后在Flex中把swc配置到
Library Path后，对应的组建就可以作为一等公明在Flex中使用了。如果MC是绑定了类的，那么对应类继承UIComponent就可以了。</p>
		<p> </p>
		<p>在googleDocs下了一个corelib包,不是蛮实用的(前段时间还自己写trim,浪费时间啊),E文看得累,以备以后查看<br />//图相用法<br />import com.adobe.images.JPGEncoder;<br />public function submit():void {<br />var encoder:JPGEncoder = new JPGEncoder(80);<br />var bytes:ByteArray = encoder.encode(getBitmapData());<br />var request:URLRequest = new URLRequest(UPLOAD_PAGE);<br />//data值就为图片编码数据ByteArray;<br />request.data = bytes;<br />request.method = URLRequestMethod.POST;<br />//这个是关键,内容类型必须是下面文件流形式;<br />request.contentType = “application/octet-stream”;<br />var loader:URLLoader = new URLLoader();<br />loader.load(request);<br />}<br />//加密用法<br />import com.adobe.crypto.SHA1;<br />trace(SHA1.hash(”132″));</p>
		<p>//utils包比较繁锁,全都是静态方法<br />import com.adobe.utils.ArrayUtil;<br />ArrayUtil.arrayContainsValue(arr, value);//arr是否包含value<br />ArrayUtil.arraysAreEqual(arr1, arr2);//arr1,arr2是否相等<br />ArrayUtil.copyArray(a);//深拷贝<br />ArrayUtil.removeValueFromArray(arr, value);//删除值value</p>
		<p>import com.adobe.utils.StringUtil;<br />StringUtil.beginsWith(str1, str2);//str1是否以str2开头<br />StringUtil.endsWith(str1, str2);//str1是否以str2结束<br />StringUtil.ltrim(str);//去左空格<br />StringUtil.rtrim();<br />StringUtil.trim();<br />StringUtil.remove(str1, str2);//从str1删除str2<br />StringUtil.replace(input, replace, replaceWith);//把input中的replace置换为replaceWith<br />StringUtil.stringsAreEqual(s1, s2, caseSensitive);//s1,s2是否相等,caseSensitive是否大小写敏感</p>
		<p>import com.adobe.utils.DateUtil;<br />DateUtil.compareDates(d1, d2);//比较,d1&gt;d2返回-1,=返回0,&lt;返回1<br />DateUtil.getAMPM(d);//返回AM or PM<br />….功能比较全, 太多了, 还有几个不知道</p>
		<p>import com.adobe.utils.NumberFormatter;<br />NumberFormatter.addLeadingZero(5);//返回补0的数,如1变成01</p>
		<p>import com.adobe.utils.IntUtil;<br />IntUtil.toHex(n,bigEndian);//16进制,bigEndian指定是后补0,还是前补0<br />IntUtil.rol(n, m);//n右移m位(位运算)<br />IntUtil.ror(n, m);//左移</p>
		<p>import com.adobe.utils.DictionaryUtil;<br />DictionaryUtil.getKeys(d);//得到键名<br />DictionaryUtil.getValues(d);//得到值</p>
		<p>import com.adobe.utils.XMLUtil;<br />这个还不会用,以后慢慢摸,本来AS3的XML就很完善了</p>
		<p>corelib包下载地址</p>
		<p>
				<br />
				<strong>Flash跨域调用问题</strong>
				<br />由于安全沙箱的限制, 处于不同域下的文件(swf, xml等)在默认状态下是不能相互调用的. 比如A域名下的flash不能访问B域名下的XML. 除非B域名在根目录下的”crossdomain.xml”文档中包含A域名. 但存在以下问题:</p>
		<p>1) 不允许改动根目录<br />解决方法:
在AS3允许crossdomain.xml不在根目录中,这时就要用
Security.loadPolicyFile(”http://www.example.com/sub/dir/pf.xml”);这样的方法来指
定. 当然只有crossdomain.xml所在目录是可以访问的.</p>
		<p>2) 不允许添加crossdomain.xml<br />解决方法: 如果要被读取的是swf文件,
只要在主函数中加入flash.system.Security.allDomain(”A”)即可. 但如果是其他各式的文件,
比如xml文档的话怎么办呢?
可以把xml读取到B上的b.swf(b上加入flash.system.Security.allDomain(”A”)).
然后在A的a.swf中加载b.swf,然后读取b.swf中的xml. 类似于:<br />_mc =event.target.content as Sprite;<br />trace(_mc["var"]);</p>
		<p>
				<br />
				<br />
				<strong>Loader与URLLoader的比较<br /></strong>AS3已经中Loader与URLLoader是两个比较容易混淆的类,特此区分:<br />应用范围<br />Loader: swf,图片(jpg,png,gif)<br />URLLoader:文本文件(xml,php,jsp…)</p>
		<p>使用方法<br />Loader:<br />loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);<br />private function loadComplete(event:Event)<br />{ trace("done");addChild(loader);}</p>
		<p>URLLoader:<br />xmlLoader.dataFormat=URLLoaderDataFormat.TEXT;<br />xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);<br />private function xmlLoaded(event:Event)<br />{<br />try {myXML = XML(event.target.data);area.text=myXML;}<br />catch (e:TypeError) {area.text="Load faild:\n"+e.message;}<br />}</p>
		<p> </p>
		<p>
				<br />
				<strong>AS3-点阵化文字</strong>
		</p>
		<p>
				<br />上面是这两天做的一个小东西，它能够把输入的文字用点阵来描述，并存这些信息存入一个数组当中。然后用这个数组来重新生成“文字”，这些“文字”可以由任意的Sprite组成，并且可以随意加上动画。</p>
		<p>承蒙大家厚爱，把源文件放在这里供大家下载。为了便于将来扩展，我使用的是Observer设计模式，希望不会把大家搞混淆。<br />源文件下载</p>
		<p>
				<br />
				<br />
				<strong>Javascript与Flash互动</strong>
				<br />在SwfObject解决Html与Flash
之间传递参数问题中已经简要介绍了如何使用SwfObject在页面中插入Flash，如何在初始时由JS向Flash传递参数，以及运行时Flash如
何调用JavaScript中函数。这里主要介绍运行时JavaScript如何互相传递参数, 并控制Flash的播放。</p>
		<p>源文件下载</p>
		<p>其实JS能直接控制Flash的播放，主要通过下列方法实现：<br />Play() —————————————- 播放动画<br />StopPlay()————————————停止动画<br />IsPlaying()———————————– 动画是否正在播放<br />GotoFrame(frame_number)—————- 跳转到某帧<br />TotalFrames()——————————- 获取动画总帧数<br />CurrentFrame()——————————回传当前动画所在帧数-1<br />Rewind()————————————-使动画返回第一帧<br />SetZoomRect(left,top,right,buttom)——-放大指定区域<br />Zoom(percent)——————————改变动画大小<br />Pan(x_position,y_position,unit)————使动画在x,y方向上平移<br />PercentLoaded()—————————-返回动画被载入的百分比<br />LoadMovie(level_number,path)———– 加载动画<br />TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数<br />TGotoLabel(movie_clip,label_name)—— movie_clip跳转到指定标签<br />TCurrentFrame(movie_clip)————— 回传movie_clip当前帧-1<br />TCurrentLabel(movie_clip)—————–回传movie_clip当前标签<br />TPlay(movie_clip)—————————播放movie_clip<br />TStopPlay(movie_clip)———————-停止movie_clip的播放<br />GetVariable(variable_name)—————–获取变量<br />SetVariable(variable_name,value)———–变量赋值<br />TCallFrame(movie_clip,frame_number)—call指定帧上的action<br />TCallLabel(movie_clip,label)—————-call指定标签上的action<br />TGetProperty(movie_clip,property)——–获取movie_clip的指定属性<br />TSetProperty(movie_clip,property,number)-设置movie_clip的指定属性</p>
		<p>Read the rest of this entry »</p>
		<p>
				<br />
				<strong>Flash中组件(Component)的创建和使用</strong>
				<br />这里简要介绍Flash中自定义组建的创建和使用方法．由于工作的原因，我用的是AS2， AS3的应该类似。<br />组建的创建<br />1 创建一个类文件，比如ClassLoader。这个文件实现组件的主要功能。它可以调用其它类，比如cn.adamstudio.effects.TextAnimation（这个类自己写，可以是简单的一个trace），这些类将会自动打包到组件中。</p>
		<p>//ClassLoader类:<br />[IconFile("spidercore.png")];<br />class ClassLoader extends MovieClip<br />{<br />public function setSize()<br />{<br />_width=18;<br />_height=18;<br />}</p>
		<p>public function doNothing():Void<br />{<br />// Trick the compiler into including<br />// the TextAnimation class in the component.<br />cn.adamstudio.effects.TextAnimation;<br />}<br />}</p>
		<p>2 创建一个Fla文件,如SWC_Generator。在其中新建一个MovieClip,如swc, 设置如下图：</p>
		<p>
				<br />3 在库中这个MC上右键,在右键菜单里选择”Component Definition…”.设置如下图：</p>
		<p>
				<br />4 此时在库面板中可以看出，MC已经转换成了一个元件．因为元件处在编辑状态．所以直接导入一个png图标到舞台上，如icon.png．这个图标是新建组建的图形标志，将来在库面板和舞台上将会看到它的身影．</p>
		<p>5 在库中这个MC上右键,在右键菜单里选择”Export SWC File …”，保存SWC文件．</p>
		<p>组建的使用<br />1 将生成的ＳＷＣ文件拷入：<br />C:\Documents and Settings\User \Local Settings\ Application Data \Adobe \Flash CS3 \en \Configuration\Components\swc</p>
		<p>2 新建一个Flash文件，如test.fla．在Flash中重新打开Component面板后，会发现swc目录下有我们拷入的SWC文件．将其拖入舞台后，在舞台上删除之．（只需要它在库中）．</p>
		<p>3 在第一帧上加入代码：<br />import cn.adamstudio.effects.TextAnimation;<br />var textAni=new TextAnimation;</p>
		<p>即使本地电脑中没有cn.adamstudio.effects.TextAnimation，程序照样能运行，因为它这个类已经包含在了SWC文件当中．</p>
		<p>注：SWC_Generator.fla和test.fla的输出设置都应该选择AS2，否则无法得到正确结果;</p>
		<p>源文件下载：源文件</p>
		<p>
				<br />
				<strong>AS2 - 创建MovieClip的子类</strong>
				<br />在Flash中作视觉表现时，常常需要创建MovieClip的子类。下面是一个不错的框架：</p>
		<p>Avatar子类：<br />class cn.adamstudio.Avatar extends MovieClip<br />{<br />//定义静态变量，用于初始化<br />public static var HAPPY:Number = 0;<br />public static var SAD:Number = 1;<br />public static var IDLE:Number = 2;</p>
		<p>//定义静态方法，用于简洁地创建自己的instance<br />public static function createAvatar(name:String, target:MovieClip, depth:Number, x:Number, y:Number):Avatar<br />{<br />var av:Avatar = Avatar(target.attachMovie(”AvatarSymbol”, name, depth));<br />av.init(x,y);<br />return av;<br />}</p>
		<p>//设置instance的坐标<br />public function init(x:Number, y:Number):Void<br />{<br />setState(Avatar.HAPPY);<br />this._x = x;<br />this._y = y;<br />}</p>
		<p>//初始化instance<br />public function setState(newState:Number):Void<br />{<br />switch (newState) {<br />case Avatar.HAPPY :<br />this.gotoAndStop(”HAPPY”);<br />break;</p>
		<p>case Avatar.SAD :<br />this.gotoAndStop(”SAD”);<br />break;</p>
		<p>case Avatar.IDLE :<br />this.gotoAndStop(”IDLE”);<br />break;<br />}<br />}<br />}<br />注：其中的静态变量和静态函数是可选的，可以根据需求的不同而有所变化。</p>
		<p>主文档中：<br />import cn.adamstudio.Avatar;<br />var av:Avatar=Avatar.createAvatar("avatar",_root,0,200,200);</p>
		<p>这种方法的特点和优点是用使用子类的静态方法来实例化MovieClip的子类，在主文档中非常简洁。<br />源文件下载</p>
		<p>
				<strong>AS-可正可负随机数的算法</strong>
				<br />我以前的写法都是:<br />Math.random()*2-1<br />今天看到一个比较有意思的写法：<br />Math.random()-Math.random()</p>
		<p>
				<br />
				<strong>AS3鼠标坐标总结<br /></strong>鼠标是Flash里追主要的互动因素，经常需要侦测鼠标事件(AS3中鼠标事件小结)和得到鼠标的坐标。鼠标坐标的获取可以分为在文档类和在子类中，两种不同的情况。</p>
		<p>1）如果是在时间线轴上，或者文档类上使用：<br />stage.mouseX 和 stage.mouseY</p>
		<p>2）在子类（如_sprite:Sprite）上使用:<br />_sprite.mouseX 和 _sprite.mouseY<br />这里得到的是鼠标相对于_sprite的坐标。如果需要的是相对于舞台的坐标，则应该使用localToGlobal,如：<br />var mousePoint:Point=new Point(_sprite.mouseX, _sprite.mouseY);<br />mousePoint=_sprite.localToGlobal(mousePoint);<br />trace("Stage coordinates:"+mousePoint);</p>
		<p>注：要使用以上代码别忘了 import flash.geom.Point;</p>
		<p>
				<br />
				<strong>AS3练习-往返运动</strong>
		</p>
		<p>
				<br />这是今天做的一个AS3的运动练习，主要是加速和减速运动的配合。发现粒子多了就会出现一些奇怪的现象，比如偶尔会几个粒子在原位置闪动。可能更Flash的代码执行顺序有关，暂时还搞不懂。</p>
		<p>
				<strong>as3运行时错误中文说明</strong>
				<br />1000 系统内存不足。 系统可用内存无法满足 Flash Player 编译代码的需要。请关闭系统上正在运行的某些应用程序或进程。<br />1001 未实现方法 _。<br />1002
Number.toPrecision 的范围是 1 至 21。Number.toFixed 和 Number.toExponential
的范围是 0 至 20。指定的值不在期望范围之内。 指定的值不在 precision 参数的期望范围之内。Number.toPrecision
的范围是 1 至 21。Number.toFixed 和 Number.toExponential 的范围是 0 至 20。<br />1003 radix 参数必须介于 2 至 36 之间；得到 _。 为方法或属性的 radix 参数传递的值小于 2 或大于 36。请传递一个介于 2 至 36 之间的值作为 radix 参数。<br />1004
对不兼容的对象调用方法 _。
尝试调用的方法不适用于指定对象。如果已将原型函数从一个对象复制到另一个对象然后又调用此函数，但目标对象类型与原始对象类型不同，则会发生此错
误。请确保目标对象与原始对象的类型相同。有关详细信息，请参阅 ECMAScript Language
Specification（《ECMAScript 语言规范》）第 3 版中的第 15 章。<br />1005 数组索引不是正整数 (_)。 尝试使用非正整数的索引值访问数组成员。仅传递正整数作为数组的索引值。<br />1006
_ 不是函数。 尝试调用不存在的函数时，发生此错误。请确保正在调用正确的函数且自 ActionScript 2.0 以来此 API
尚未发生更改。此外，请确保正在使用正确的对象。例如，使用以下代码时，将出现此错误（由于最后一行错误调用了变量 big 而未调用变量 blg）：<br />var blg:String = “foo”;<br />var big:Sprite = new Sprite();<br />var error:int = big.length();<br />1007 尝试对非构造函数进行实例化。<br />1008 _ 指代不明确；发现多个匹配的绑定。<br />1009
无法访问空对象引用的属性或方法。 计算结果为 null 的对象可以不包含任何属性。在某些意外（尽管有效）的情况下，可能发生此错误。以创建
Sprite 对象的以下代码为例。由于从未将此 Sprite 对象添加到显示列表中（使用 DisplayObjectContainer 对象的
addChild() 方法），因此其 stage 属性设置为 null。在这种情况下，此示例将生成此错误，这是因为 Sprite 对象的
stage 属性不能拥有任何属性： Read the rest of this entry »</p>
		<p>
				<br />
				<strong>AIR-最新RSSReader(基于Flash)</strong>
				<br />经过长时间的努力，终于用Flash CS3+AS3+AIR Beta2做出了RSSReader 2.0。<br />前一段时间用html+JS做了个WordpressReader, 虽然实现了自动升级，等很cool的功能，但界面还是比较简朴。<br />AIR读取Blog RSS - Adobe AIR Beta2 实践<br />WordpressReader 1.1 完成</p>
		<p>这次做的RSSReader是基于ActionScript3的，界面漂亮了很多，而且用户体验也有了显著的提高。<br />程序下载：<a href="http://www.adamstudio.cn/blog/download/RSSReader.air">http://www.adamstudio.cn/blog/download/RSSReader.air</a><br />初始介面：</p>
		<p>文章阅读界面：</p>
		<p>实现的功能：<br />1 读取服务器端XML文档；<br />2 将读取的XML文档储存到AIR的内建本地数据库SQLite !!!（太酷了！）<br />3 判断网络连接状况，如果网络畅通就读取并以动画的形式展示文章标题，同时用最新文章刷新SQLite中已有文章。如果网络不通，则读取并显示SQLite中储存的文章；<br />4 以动画形式展示动画文章标题；<br />5 自定义事件和文章标题与文章内容之间的切换。<br /><br />多说也无用，试用一下你就知道Adobe AIR有多强了！<br />程序下载：<a href="http://www.adamstudio.cn/blog/download/RSSReader.air">http://www.adamstudio.cn/blog/download/RSSReader.air</a></p>
		<p>
				<br />
				<strong>Flash-navigateToURL取代getURL</strong>
				<br />AS3中使用
navigateToURL取代了getURL，个人感觉navigateToURL最大的好处就是方便了传递参数,不足的地方嘛，据说弹出的新窗口会被
浏览器拦截。需要使用：ExternalInterface.call(”window.open”,winurl,”");来避免，但是这是采用了调用
JS来做，是必须在浏览器支撑并且JS可以使用的情况下（没有测试）。<br />另外发现在Adobe AIR中使用navigateToURL打开连接时，只能在新窗口中打开（不会被浏览器拦截），”_self”,”_parent”,”_top”都没有用．而且都是调用浏览器，而不是在AIR中打开．</p>
		<p>具体用法如下：</p>
		<p>package {<br />import flash.display.Sprite;<br />import flash.net.navigateToURL;<br />import flash.net.URLRequest;<br />import flash.net.URLVariables;</p>
		<p>public class NavigateToURLExample extends Sprite {</p>
		<p>public function NavigateToURLExample() {<br />var <a href="http://hi.baidu.com/fc/editor/String">url:String</a> = “http://www.adobe.com”;<br />var variables:URLVariables = new URLVariables();<br />variables.exampleSessionId = new Date().getTime();<br />variables.exampleUserLabel = “Your Name”;<br />var request:URLRequest = new URLRequest(url);<br />request.data = variables;<br />try {<br />navigateToURL(request);<br />}<br />catch (e:Error) {<br />// handle error here<br />}<br />}<br />}<br />}</p>
		<p>
				<br />
				<strong>Flash-如何改变动态文本透明度？</strong>
				<br />因为Flash的系统字体不直接支持透明，所以我们得通过嵌入字体或者Filter类来解决。简单地通过改变动态文本的alpha或者它做在的mc的alpha都是没有用的。</p>
		<p>1 嵌入字体<br />这种方法最简单，选中动态文本框，然后在属性面板中点嵌入（“Embed”）按钮，按后选择要全部字库嵌入，还是只嵌入部分字符。但代价是文件会变大，尤其在嵌入中文字体的时候，绝对是噩梦。当然只是嵌入下载进度0-9这样简单的几个字符，还是非常方便的。</p>
		<p>2 Filter<br />这是从Blueidea学来的，就是给动态文本增加一个滤镜，即使是空滤镜也可以。<br />AS3中代码<br />//建立动态文本<br />var my_txt:TextField=new TextField();<br />my_txt.autoSize = TextFieldAutoSize.LEFT;<br />my_txt.background = true;<br />my_txt.border = true;<br />my_txt.text = “Hello world and welcome to the show.”;<br />//定义滤镜<br />var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);<br />my_txt.filters = [txt_blur];<br />my_txt.alpha = 0.5;<br />//加入动态文本<br />my_txt.x=my_txt.y=50;<br />addChild(my_txt);<br />AS2中代码<br />import flash.filters.BlurFilter;<br />var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);<br />this.createTextField(”my_txt”, 1, 100, 100, 300, 100);<br />my_txt.text = “DDGGDGDGDGDG”;<br />my_txt.filters = [txt_blur];<br />my_txt._alpha = 50;</p>
		<p>3 BitmapData 和 ColorMatrixFilter<br />据HbrO说BitmapData和ColorMatrixFilter也能实现动态文本的半透明效果。但我这人比较懒，发现一种方法之后就犯懒了。以后有时间再研究吧 ，哈哈。</p>
		<p>
				<br />
				<strong>AS3中鼠标事件小结</strong>
				<br />鼠标事件（MouseEvent）和鼠标位置（AS3鼠标坐标总结）是
RIA中最重要的人机交互途径。最近在做一个动态产品展示的系统ProdutShow的时候才发现自己对鼠标事件的了解有多么肤浅。现在
ProductShow已经做完了，这里把在使用鼠标事件时要注意的问题总结一下：<br />1 鼠标事件分为MOUSE_OVER,
MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT,
MOUSE_WHEEL和MOUSE_LEAVE。其中前六个事件都来自flash.events.MouseEvent类，最后一个
MOUSE_LEAVE却是来自flash.events.Event，在导入类包的时候一定要注意这个问题，因为我在这点上就花了很长时间调试，才得发
现问题所在。<br />MOUSE_OVER - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果；<br />MOUSE_MOVE - 鼠标在目标对象之上移动时触发，主要用于判断。比如判断在拖拽实例时，实例是否在允许的范围之内，如果超出，立刻停止拖拽或者重新设定实例的坐标；<br />MOUSE_DOWN - 鼠标在目标对象之上按下时触发。注意，只有按下鼠标左键时才会触发，右键和滚轮都不会触发。在目标对象之外按下鼠标左键，再移动到目标对象之上时，也不会触发；<br />MOUSE_UP - 鼠标在目标对象之上松开时触发。注意，只有松开鼠标左键时才会触发，右键和滚轮都不会触发。在目标对象之上按下鼠标左键，再移动到目标对象之外松开时，不会触发。但在目标对象之外按下鼠标左键，再移动到目标对象之上松开时，就会触发。<br />MOUSE_OUT- 鼠标移动到目标对象之外时触发。<br />MOUSE_WHEEL - 鼠标在目标对象之上转动滚轮时触发。<br />MOUSE_LEAVE
-
当光标离开舞台时触发（stage.addEventListener(Event.MOUSE_LEAVE,leaveHandler);）。在使用自
定鼠标后，在鼠标离开舞台时，触发MOUSE_LEAVE事件，然后可以把自定义的鼠标隐藏掉，避免还停留在舞台上。</p>
		<p>2 mouseChildren。目标对象中含有子实例时，感应鼠标行为的是子时列，而非目标对象。如果使用 cursor.mouseEnabled=false; 就可以由目标对象来更应鼠标行为。</p>
		<p>3 mouseEnabled。当实例重叠时，出于显示列表上方的实例总比下方实例更有优先权感应鼠标行为。当想让下方实例感应鼠标行为时使用
cursor.mouseEnabled=false;
即可。这常用于自定义鼠标后，去除自定义鼠标对鼠标行为的干涉，因为自定义鼠标往往一直处于鼠标下方，其他实例无法再感应到鼠标的变化。</p>
		<p>另外，也许DOUBLE_CLICK也应该算做鼠标事件，但要使用它，必须先让doubleClickEnabled=true:<br />var bg:Sprite=new Sprite();<br />bg.doubleClickEnabled=true;<br />bg.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);<br />…</p>
		<p>
				<br />
				<strong>typeof、is、as的区别</strong>
				<br />typeof、is、as都是用于判断变量类型的，只是各自的返回值不同。请看下方代码：<br />var a:Number=0;<br />trace(typeof(a));//输出:Number<br />trace(typeof(typeof(a)));//输出:String<br />trace(a is Number);//输出:true<br />trace(a as Number);//输出:0<br />trace(a as String);//输出:null</p>
		<p>
				<br />
				<br />
				<strong>Null、NaN和undefined的区别</strong>
				<br />其实Null、NaN和undefined都是变量的默认初始值。变量类型不同，系统给与的初始值就不同：<br />int,uint - 0<br />Boolean - false<br />Number - NaN<br />String,Array,Object - null<br />未指定变量类型 - undefined</p>
		<p>
				<br />
				<br />
				<strong>SwfObject解决Html与Flash之间传递参数问题<br /></strong>在彻底摒弃Adobe的
激活ActiveX控件的方法一文中已经详细分析了使用Adobe提供的AC_RunActiveContent.js导致HTML与Flash之间不能
传递参数的问题。经过Adobe论坛里GWD的提示，我转而寻求SwfObject的帮助。发现SwfObject是一个很好的解决方案。</p>
		<p>SwfObject英文介绍：<a href="http://blog.deconcept.com/swfobject/">http://blog.deconcept.com/swfobject/</a><br />SwfObject中文翻译：<a href="http://www.awflasher.com/flash/articles/swfobj.htm">http://www.awflasher.com/flash/articles/swfobj.htm</a><br />源文件：SWFObject 1.5</p>
		<p>关于SwfObject的介绍上面两篇文章已经讲的很详细了。我这里只列一段标准的应用和一些上面两篇文章没有提到的问题.</p>
		<p>Html中的JS代码<br />&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript"&gt;<br />// &lt;![CDATA[<br />var so = new SWFObject("asCallJs.swf", "MyDemo", "500", "400", "9", "#FF6600");<br />so.addVariable("param1",
"Parameter1"); // this line is optional, but this example uses the
variable and displays this text inside the flash movie<br />so.addVariable("param2", "Parameter2");<br />so.useExpressInstall('expressinstall.swf');<br />so.write("flashcontent");<br />// ]]&gt;<br />&lt;/script&gt;&lt;!--被AS调用的JS函数--&gt;<br />&lt;script language="Javascript"&gt;<br />// &lt;![CDATA[<br />// adds two numbers, and sends the result back to ActionScript<br />function addNumbers(num1, num2)<br />{<br />result=num1 + num2;<br />alert("3+7=" + result);<br />return (result);<br />}<br />// ]]&gt;<br />&lt;/script&gt; Read the rest of this entry »</p>
		<p>
				<br />
				<strong>彻底摒弃Adobe的激活ActiveX控件的方法</strong>
				<br />大家知道，在IE中只有激活了
ActiveX控件，Flash才能够与浏览者交互，否则得手动点一下激活。Flash也提供了一个很“方便”的解决方案，就是在发布swf文件的同时，
发布html文件即可。这样Flash会在生成一个swf文件，一个包含swf的Html文件，和一个“AC_RunActiveContent.js”
文件。Html文件通过调用AC_RunActiveContent.js，实现激活ActiveX控件。这一切都很便捷，直到你希望在html和
Flash之间传递参数。<br />问题出现<br />在很多商业网站中，都涉及到用同一个Flash来显示大量不同的内容（图片，视频或产品信息等），这就需要向这个Flash传递参数。常见的传参方法有三种，但都会受到AC_RunActiveContent.js的不良影响。<br />1
ExternalInterface:
这是困扰我最久的一个问题。据Adobe的描述，这是最好的传参方法，能都非常自由和直接地在AS和JS之间互相传递参数或者互相调用函数。但我在使用
Adobe的示例文件时发现，在IE中AS无法得到JS的返回值（ExternalInterface在IE中的Bug），经过不断的尝试才发现是
AC_RunActiveContent.js在捣鬼，只要把它和html中对应代码以
及&lt;noscript&gt;&lt;/noscript&gt;删除就一切正常了。<br />请看示例：<br />Player8,AS2: <a href="http://www.adamstudio.cn/lab/var/test/test_v8.html">http://www.adamstudio.cn/lab/var/test/test_v8.html</a><br />Player9,AS3: <a href="http://www.adamstudio.cn/lab/var/test/test_v9.html">http://www.adamstudio.cn/lab/var/test/test_v9.html</a><br />如果带有激活ActiveX控件的那段JS代码，IE中就无法得到返回值，请看：<br /><a href="http://www.adamstudio.cn/lab/var/test/test_error.html">http://www.adamstudio.cn/lab/var/test/test_error.html</a><br />所有源文件：<a href="http://www.adamstudio.cn/lab/var/test/test.rar">http://www.adamstudio.cn/lab/var/test/test.rar</a><br />2 FlashVars:<br />3 URL传递参数<br />后
两种方法受AC_RunActiveContent.js的影响更大，因为这两种方法都是
在&lt;noscript&gt;&lt;/noscript&gt;之间加入代码，而在JS能运行的浏览器当中（绝大多数浏览器都能运行JS），这些
代码根本就不会运行。所以无论在Firefox或者IE中都不起任何作用！<br />也就是说常用的三种在Html与AS之间传递参数的方法均受到激活ActiveX控件的那段代码的影响。所以要想在html和Flash之间传递参数，就必须摒弃Flash自带的激活ActiveX控件的方案！</p>
		<p>替代方案：SwfObject　请参考SwfObject解决Html与Flash之间传递参数问题</p>
<img src ="http://www.blogjava.net/oathleo/aggbug/281188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2009-06-10 17:03 <a href="http://www.blogjava.net/oathleo/archive/2009/06/10/281188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex与JavaScript的交互：调用JavaScipt或者被JavaScript调用 </title><link>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 11 Apr 2008 04:04:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/192140.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/192140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/192140.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html'>阅读全文</a><img src ="http://www.blogjava.net/oathleo/aggbug/192140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-04-11 12:04 <a href="http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript 中XML处理方法</title><link>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Tue, 08 Apr 2008 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/191484.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/191484.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/191484.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html'>阅读全文</a><img src ="http://www.blogjava.net/oathleo/aggbug/191484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-04-08 14:41 <a href="http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex getClassName</title><link>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Tue, 08 Apr 2008 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/191470.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/191470.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/191470.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html'>阅读全文</a><img src ="http://www.blogjava.net/oathleo/aggbug/191470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-04-08 13:55 <a href="http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 画2D</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 28 Mar 2008 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189192.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189192.html</trackback:ping><description><![CDATA[&lt;?xml version="1.0"?&gt;<br />&lt;!-- usingas/AddingChildrenAsUIComponents.mxml --&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"&gt;<br />    &lt;mx:Script&gt;&lt;![CDATA[<br />        import flash.display.Sprite;<br />        import mx.core.UIComponent;<br /><br />        private var xLoc:int = 20;<br />        private var yLoc:int = 20;<br />        private var circleColor:Number = 0xFFCC00;<br /><br />        private function addChildToPanel():void {<br /><br />            <font color="#ff0000">var circle:Sprite = new Sprite();<br /></font>            circle.graphics.beginFill(circleColor);<br />            circle.graphics.drawCircle(xLoc, yLoc, 15);<br /><br />            <font color="#ff0000">var c:UIComponent = new UIComponent();<br /></font>            c.addChild(circle);<br />            panel1.addChild(c);<br />            <br />            xLoc = xLoc + 5;<br />            yLoc = yLoc + 1;<br />            circleColor = circleColor + 20;<br />        }<br />    ]]&gt;&lt;/mx:Script&gt;<br /><br />    &lt;mx:Panel id="panel1" height="250" width="300" verticalScrollPolicy="off"/&gt;<br /><br />    &lt;mx:Button id="myButton" label="Click Me" click="addChildToPanel();"/&gt;<br />    <br />&lt;/mx:Application&gt;<img src ="http://www.blogjava.net/oathleo/aggbug/189192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-03-28 10:00 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 简单 绑定</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 28 Mar 2008 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189191.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189191.html</trackback:ping><description><![CDATA[绑定的作用在于，将Flex中的变量、类、方法等与组件的值进行绑定。例如，一个变量如果被绑定后，那么引用该变量的组件的相关属性也会发生改变。我们用一个实例来表示<br /><br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:components="components.*"<br />      &gt;<br />      &lt;mx:Script&gt;<br />           &lt;![CDATA[<br />                 import mx.controls.Alert;            <br />                 <font color="#ff0000">[Bindable]<br /></font>                 private var isSelected:Boolean;<br />                 private function clickHandler(e:MouseEvent){<br />                 //Alert.show(e.currentTarget.toString());<br />                 isSelected=isSelected?false:true; //这句话的意思是如果isSelected为true，改变它为false，如果它为false，改变它为true；<br />                 Alert.show(isSelected.toString());<br />                 }<br />           ]]&gt;<br />      &lt;/mx:Script&gt;<br />      &lt;mx:Button id="testBtn"  click="clickHandler(event)" label="测试" /&gt;<br />      &lt;mx:CheckBox x="60" selected="{isSelected}" /&gt;<br />&lt;/mx:Application&gt;<br /><br />上述程序的效果就是，当点击button时，button不是直接改变checkbox的选中状态，而是改变isSelected这个变量，由于isSelected是被绑定了的，那么会关联的改变CheckBox的选中状态。<br /><br />这样看起来有些多此一举，完全可以直接改变checkbox的selected属性，我只是为了演示一下效果。如果说你的checkbox是动态构造的上百个，你不会去一个个的改变他吧。<br /><br />因此，我们多数会将一个数据源进行绑定声明，这样引用了这个数据源的控件，比如datagrid，在数据源发生了改变时，即使你不重新设置dataProvider，列表的数据也会刷新。<img src ="http://www.blogjava.net/oathleo/aggbug/189191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-03-28 09:59 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex ColorLabel 实现</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 28 Mar 2008 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189190.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189190.html</trackback:ping><description><![CDATA[
		<div> public class ColorLabel extends Label<br /> {<br />  private var colorValue:Number = -1;<br />  public function ColorLabel()<br />  {<br />   super();<br />  }<br />  <br />  public function setColorValue(colorValue:Number):void<br />  {<br />   this.colorValue = colorValue;<br />  }<br />  <br />  override protected function <font color="#ff0000">updateDisplayList</font>(unscaledWidth:Number, unscaledHeight:Number):void <br />     {<br />            super.updateDisplayList(unscaledWidth, unscaledHeight);<br />            if(colorValue&gt;=0){<br />             drawColor(colorValue);<br />            }<br />     }<br />  <br />  private function drawColor(colorValue:Number):void<br />     {<br />        this.graphics.beginFill(colorValue);<br />              this.graphics.drawRect(this.textField.x,this.textField.y,this.textWidth ,this.textHeight);<br />              this.graphics.endFill();<br />     }</div>
		<div> }</div>
		<div> </div>
		<div> </div>
		<div> *  &lt;p&gt;In general, components do not override the &lt;code&gt;<font color="#ff0000">validateProperties()&lt;/code&gt;, <br /> *  &lt;code&gt;validateSize()&lt;/code&gt;, or &lt;code&gt;validateDisplayList()&lt;/code&gt; methods</font>.  <br /> *  In the case of UIComponents, most components override the <br /> *  &lt;code&gt;<font color="#ff0000">commitProperties()&lt;/code&gt;, &lt;code&gt;measure()&lt;/code&gt;, or <br /> *  &lt;code&gt;updateDisplayList()&lt;/code&gt; methods</font>, which are called<br /> *  by the &lt;code&gt;validateProperties()&lt;/code&gt;, <br /> *  &lt;code&gt;validateSize()&lt;/code&gt;, or <br /> *  &lt;code&gt;validateDisplayList()&lt;/code&gt; methods, respectively.&lt;/p&gt;</div>
		<div> </div>
		<div> </div>
		<div>
				<h2> </h2>
				<h2>
						<font color="#ff0000">Implementing the commitProperties() method </font>
				</h2>
				<p>You use the <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#commitProperties%28%29" target="_blank"><u><font color="#0066cc">commitProperties()</font></u></a>
method to coordinate modifications to component properties. Most often,
you use it with properties that affect how a component appears on the
screen. </p>
				<p>Flex schedules a call to the <samp>commitProperties()</samp> method when a call to the <samp>invalidateProperties()</samp> method occurs. The <samp>commitProperties()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateProperties()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateProperties()</samp> method. 
</p>
				<p>Calls to the <samp>commitProperties()</samp> method occur before calls to the <samp>measure()</samp> method. This lets you set property values that the <samp>measure()</samp> method might use. 
</p>
				<h2>
						<font color="#ff0000">Implementing the measure() method </font>
				</h2>
				<p>The <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#measure%28%29" target="_blank"><u><font color="#0066cc">measure()</font></u></a> method sets the default component size, in pixels, and optionally sets the component's default minimum size. 
</p>
				<p>Flex schedules a call to the <samp>measure()</samp> method when a call to the <samp>invalidateSize()</samp> method occurs. The <samp>measure()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateSize()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateSize()</samp> method. 
</p>
				<h2>
						<font color="#ff0000">Implementing the updateDisplayList() method </font>
				</h2>
				<p>The <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#updateDisplayList%28%29" target="_blank"><u><font color="#0066cc">updateDisplayList()</font></u></a>
method sizes and positions the children of your component based on all
previous property and style settings, and draws any skins or graphic
elements that the component uses. The parent container for the
component determines the size of the component itself.
</p>
				<p>A component does not appear on the screen until its <samp>updateDisplayList()</samp> method gets called. Flex schedules a call to the <samp>updateDisplayList()</samp> method when a call to the <samp>invalidateDisplayList()</samp> method occurs. The <samp>updateDisplayList()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateDisplayList()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateDisplayList()</samp> method. </p>
		</div>
		<div>
				<font color="#ff0000">Drawing graphics in your component </font>
		</div>
		<p>Every Flex component is a subclass of the Flash <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/flash/display/Sprite.html" target="_blank"><u><font color="#0066cc">Sprite</font></u></a> class, and therefore inherits the <samp>Sprite.graphics</samp> property. The <samp>Sprite.graphics</samp> property specifies a <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/flash/display/Graphics.html" target="_blank"><u><font color="#0066cc">Graphics</font></u></a> object that you can use to add vector drawings to your component.
</p>
		<p>For example, in the <samp>updateDisplayList()</samp> method, you can use methods of the Graphics class to draw borders, rules, and other graphical elements:
</p>
		<h2> </h2>
		<p>总结：
</p>
		<p>修改属性用<font color="#ff0000">commitProperties，自己画用updateDisplayList</font></p>
<img src ="http://www.blogjava.net/oathleo/aggbug/189190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-03-28 09:58 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 添加自定义componemt 到 mxml</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html</link><dc:creator>oathleo</dc:creator><author>oathleo</author><pubDate>Fri, 28 Mar 2008 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189189.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189189.html</trackback:ping><description><![CDATA[
		<div>
				<font color="#ff3300">自定义componemt</font>
		</div>
		<div>//////</div>
		<div>package web<br />{<br /> import mx.controls.DataGrid;<br /> import mx.core.IFactory;<br /> <br /> public class WebPropertySheet extends DataGrid<br /> {<br />  public function WebPropertySheet()<br />  {<br />   super();<br />   trace("WebPropertySheet");<br />  }<br />  <br />     override public function get itemRenderer():IFactory<br />     {<br />        trace("itemRenderer");<br />                 return super.itemRenderer;<br />     }</div>
		<div> }<br /> }</div>
		<div> </div>
		<div> </div>
		<div> </div>
		<div>&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml</a>" xmlns="*"   <br /><font color="#ff0000"> xmlns:twaver="web.*"</font><br /> layout="absolute"<br /> creationComplete="service.send()" viewSourceURL="srcview/index.html"&gt;<br /> <br /> &lt;mx:Script&gt;<br />  &lt;![CDATA[<br />   import mx.collections.ArrayCollection;<br />   import mx.rpc.events.ResultEvent;<br />   import com.adobe.serialization.json.JSON;<br />   <br />   import web.WebPropertySheet;<br />   <br />   private function onJSONLoad(event:ResultEvent):void<br />   {<br />    var rawData:String = String(event.result);<br />    <br />       var pattern:RegExp = /&amp;nbsp;/gi;<br />             rawData =  rawData.replace(pattern," ");<br />       <br />    var arr:Array = (JSON.decode(rawData) as Array);<br />    <br />    var dp:ArrayCollection = new ArrayCollection(arr);<br />    <br />    grid.dataProvider = dp;<br />   }<br />  ]]&gt;<br /> &lt;/mx:Script&gt;<br /> <br /> &lt;mx:HTTPService<br />  id="service"<br />  resultFormat="text"<br />  url="mashedpotato.json"<br />  result="onJSONLoad(event)" /&gt;<br /> <br /><font color="#ff0000"> &lt;twaver:WebPropertySheet id="grid" right="10" left="10" top="10" bottom="10"&gt;</font><br /><font color="#ff0000">  &lt;twaver:columns&gt;</font><br />   &lt;mx:DataGridColumn headerText="Name" dataField="name" /&gt;<br />   &lt;mx:DataGridColumn headerText="Value" dataField="value" /&gt;<br /><font color="#ff0000">  &lt;/twaver:columns&gt;</font><br /><font color="#ff0000"> &lt;/twaver:WebPropertySheet&gt;</font><br /> <br />&lt;/mx:Application&gt;</div>
		<div> </div>
		<div>注意</div>
		<div>1.在mx:Application属性里定义<font color="#ff0000"> xmlns:twaver="web.*"</font></div>
		<div>
				<font color="#000000">2.  &lt;twaver:columns&gt; columns是</font>
				<font color="#404040">DataGrid的属性。这里要在mxml 里定义，不能用mx的命名空间，得用自己的命名空间</font>
		</div>
<img src ="http://www.blogjava.net/oathleo/aggbug/189189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">oathleo</a> 2008-03-28 09:57 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>