﻿<?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-ivaneeo's blog-随笔分类-flex-我酷所以我在</title><link>http://www.blogjava.net/ivanwan/category/36392.html</link><description>自由的力量，自由的生活。</description><language>zh-cn</language><lastBuildDate>Thu, 08 Mar 2012 23:23:11 GMT</lastBuildDate><pubDate>Thu, 08 Mar 2012 23:23:11 GMT</pubDate><ttl>60</ttl><item><title>Flex组件IFrame中嵌入HTML页面的方法</title><link>http://www.blogjava.net/ivanwan/archive/2012/03/08/371555.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 08 Mar 2012 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2012/03/08/371555.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/371555.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2012/03/08/371555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/371555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/371555.html</trackback:ping><description><![CDATA[<div><div id="blog_text"><div> <div>功能描述：在Flex中嵌套框架，并且进行数值传递</div> <div> </div> <div>１、编辑Flex框架组件iFrame.mxml</div> <div>&lt;?xml version="1.0" encoding="utf-8"?&gt;</div> <div> </div> <div>&lt;mx:Canvas xmlns:mx="<a href="http://www.adobe.com/2006/mxml"><u>http://www.adobe.com/2006/mxml</u></a>"<br /> &nbsp;&nbsp;&nbsp;  resize="callLater(moveIFrame)"<br /> &nbsp;&nbsp;&nbsp;  move="callLater(moveIFrame)"&gt;</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;  &lt;mx:Script&gt;<br /> &nbsp;&nbsp;&nbsp;  &lt;![CDATA[</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  import flash.external.ExternalInterface;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  import flash.geom.Point;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  import flash.net.navigateToURL;</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private var __source: String;</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /**<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  * Move iframe through ExternalInterface.  The location is determined using localToGlobal()<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  * on a Point in the Canvas.<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  **/<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private function moveIFrame(): void<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var localPt:Point = new Point(0, 0);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var globalPt:Point = this.localToGlobal(localPt);</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ExternalInterface.call("moveIFrame", globalPt.x, globalPt.y, this.width, this.height);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /**<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  * The source URL for the IFrame.  When set, the URL is loaded through ExternalInterface.<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  **/<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public function set source(source: String): void<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (source)<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (! ExternalInterface.available)<br /> &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;&nbsp;&nbsp;  throw new Error("ExternalInterface is not available  in this container. Internet Explorer ActiveX, Firefox, Mozilla 1.7.5  and greater, or other browsers that support NPRuntime are required.");<br /> &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;  __source = source;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ExternalInterface.call("loadIFrame", source);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  moveIFrame();<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public function get source(): String<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return __source;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /**<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  * Whether the IFrame is visible.  <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  **/<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  override public function set visible(visible: Boolean): void<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  super.visible=visible;</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (visible)<br /> &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;  ExternalInterface.call("showIFrame");<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else <br /> &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;  ExternalInterface.call("hideIFrame");<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</div> <div> </div> <div>&nbsp;&nbsp;&nbsp;  ]]&gt;<br /> &nbsp;&nbsp;&nbsp;  &lt;/mx:Script&gt;</div> <div> </div> <div>&lt;/mx:Canvas&gt;</div> <div>２、放置到要使用框架的Flex中index.mxml，并写入引用哪个frame.html</div> <div>&lt;ui:IFrame id="iFrame" source="frame.html" visible="true" width="100%" height="300"/&gt;</div> <div>３、在引用框架的Flex生成页index.html里加入：</div> <div>&nbsp;&nbsp;&nbsp;&nbsp; &lt;1. wmode set to opaque</div> <div>&nbsp;&nbsp;&nbsp;&nbsp; 在调用swf的后面加上"wmode","opaque"</div> <div>&nbsp;&nbsp;&nbsp;&nbsp; 例如："pluginspage", "<a href="http://www.adobe.com/go/getflashplayer"><u>http://www.adobe.com/go/getflashplayer</u></a>",</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "wmode","opaque"<br /> &nbsp;&nbsp;&nbsp;&nbsp; &lt;2. the moveIFrame,hideIFrame,showIFrame,loadIFrame methods</div> <blockquote dir="ltr" style="margin-right: 0px"> <div dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp; &lt;script language="JavaScript" type="text/javascript"&gt;</div> <blockquote dir="ltr" style="margin-right: 0px"><blockquote dir="ltr" style="margin-right: 0px"> <div dir="ltr"><br /> &lt;!--<br /> // -----------------------------------------------------------------------------<br /> // Globals<br /> // Major version of Flash required<br /> var requiredMajorVersion = 9;<br /> // Minor version of Flash required<br /> var requiredMinorVersion = 0;<br /> // Minor version of Flash required<br /> var requiredRevision = 28;<br /> // -----------------------------------------------------------------------------<br /> // --&gt;<br /> function moveIFrame(x,y,w,h) {<br /> &nbsp;&nbsp;&nbsp;  var frameRef=document.getElementById("myFrame");<br /> &nbsp;&nbsp;&nbsp;  frameRef.style.left=x;<br /> &nbsp;&nbsp;&nbsp;  frameRef.style.top=y;<br /> &nbsp;&nbsp;&nbsp;  var iFrameRef=document.getElementById("myIFrame"); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iFrameRef.width=w;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iFrameRef.height=h;<br /> }</div> <div dir="ltr"> </div> <div dir="ltr">function hideIFrame(){<br /> &nbsp;&nbsp;&nbsp;  document.getElementById("myFrame").style.visibility="hidden";<br /> }<br />  <br /> function showIFrame(){<br /> &nbsp;&nbsp;&nbsp;  document.getElementById("myFrame").style.visibility="visible";<br /> }</div> <div dir="ltr" style="margin-right: 0px"> </div> <div dir="ltr" style="margin-right: 0px">function loadIFrame(url){<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("myFrame").innerHTML = "&lt;iframe  id='myIFrame' src='" + url + "'frameborder='0'&gt;&lt;/iframe&gt;";<br /> }</div> <div dir="ltr" style="margin-right: 0px">//要调用的内容，加载前三个就可以了，后面这个函数是用来调用返回值</div> <div dir="ltr" style="margin-right: 0px">function getEditorText(){<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.getElementById("myIFrame").contentWindow.GetEditorText1();<br /> }</div> </blockquote> <div>&lt;/script&gt;</div> <div> </div> </blockquote></blockquote> <div dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp; &lt;3. the 'myFrame' div</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在&lt;/body&gt;这前写入：</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="myFrame"  style="position:absolute;background-color:transparent;border:0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  px;visibility:hidden;"&gt;&lt;/div&gt;</div> <div dir="ltr" style="margin-right: 0px"> </div> <div dir="ltr" style="margin-right: 0px">４、在Flex页面index.mxml输入的函数值,调用index.html中的'getEditorText'函数，并且写入到text1.text中</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; text1.text=ExternalInterface.call('getEditorText',param1,param2,param3,...)</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; getEditorText:函数名称</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; param:参数值</div> <div dir="ltr" style="margin-right: 0px"> </div> <div dir="ltr" style="margin-right: 0px">５、在生成页中取得框架中的函数</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; 框架内的frame.html，放置在head之间:</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp; function GetEditorText1(){<br /> &nbsp;&nbsp;&nbsp;&nbsp; return getHTML(params);</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; index.html生成页的调用，设置在head之间：</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; function getEditorText(){<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.getElementById("myIFrame").contentWindow.GetEditorText1();<br /> &nbsp;&nbsp;&nbsp;&nbsp; }</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp;</div> <div dir="ltr" style="margin-right: 0px">后记：实际中在这里只是调用一个层放在对应位置而已，当我们在Flex中做申缩动作时，层也要跟着改变，我是如此处理的：</div> <div dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp; 设置move或show事件，当move或show时则调用：iFrame.source = "frame.html"</div> <div dir="ltr" style="margin-right: 0px">参考：</div> <div dir="ltr" style="margin-right: 0px"><a href="http://www.cnflex.cn/html/mxml/20070321/95.html">http://www.cnflex.cn/html/mxml/20070321/95.html</a></div> <div dir="ltr" style="margin-right: 0px"><a href="http://www.cnblogs.com/dannyr/archive/2004/11/24/68026.aspx">http://www.cnblogs.com/dannyr/archive/2004/11/24/68026.aspx</a></div> <div dir="ltr" style="margin-right: 0px"><a href="http://renaun.com/flex2/posts/flexsearch/index.html">http://renaun.com/flex2/posts/flexsearch/index.html</a>（有源码下载）</div> </div></div></div><br /><div><div id="blog_text"><p>具体的一个例子&#8212;&#8212;使用IFrame这个框架的一个页面的代码如下：</p> <p>&lt;!-- saved from url=(0014)about:internet --&gt;<br /> &lt;html lang="en"&gt;<br /> &lt;head&gt;<br /> &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br /> &lt;title&gt;&lt;/title&gt;<br /> &lt;script src="AC_OETags.js" language="javascript"&gt;&lt;/script&gt;<br /> &lt;style&gt;<br /> body { margin: 0px; overflow:hidden }<br /> &lt;/style&gt;</p> <p><br /> &lt;script&gt;<br /> &lt;!--<br /> function moveIFrame(x,y,w,h) {<br /> // alert("move to " + x + "," + y + ", " + w + "/" + h);<br /> &nbsp;&nbsp;&nbsp;  var frameRef=document.getElementById("myFrame");<br /> &nbsp;&nbsp;&nbsp;  frameRef.style.left=x;<br /> &nbsp;&nbsp;  frameRef.style.top=y;<br /> &nbsp;&nbsp;&nbsp;  frameRef.width=w;<br /> &nbsp;&nbsp;&nbsp;  frameRef.height=h;<br /> }</p> <p>function hideIFrame(){<br /> // alert("hide");<br /> &nbsp;&nbsp;&nbsp;  document.getElementById("myFrame").style.visibility="hidden";<br /> }</p> <p>function showIFrame(){<br /> // alert("show");<br /> &nbsp;&nbsp;&nbsp;  document.getElementById("myFrame").style.visibility="visible";<br /> }</p> <p>function navigateTo(url) {<br /> // alert("nav to " + url);<br /> // alert("from " + document.getElementById("myFrame").location);<br />  document.getElementById("myFrame").src = url;<br /> }</p> <p>--&gt;<br /> &lt;/script&gt;</p> <p><br /> &lt;script language="VBScript"&gt;<br /> &lt;!--</p> <p>// Catch FS Commands in IE, and pass them to the corresponding JavaScript function.<br /> Sub flexapp_FSCommand(ByVal command, ByVal str)<br /> &nbsp;&nbsp;&nbsp;  call flexapp_DoFSCommand(command, str)<br /> end sub</p> <p>// --&gt;<br /> &lt;/script&gt;<br /> &lt;/head&gt;<br /> &lt;body style="margin:0px"&gt;</p> <p>&lt;object onMouseDown="document.body.focus();"<br /> &nbsp;&nbsp;  classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'<br /> &nbsp;&nbsp;</p> <p>codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,14</p> <p>,0'<br /> &nbsp;&nbsp;  width='100%' height='100%'<br /> &nbsp;&nbsp;  id='flexapp' name='flexapp'&gt;<br /> &nbsp;&nbsp;  &lt;param name='flashvars' value=''&gt;<br /> &nbsp;&nbsp;  &lt;param name='src' value='EXPIframe.swf'&gt;<br /> &nbsp;&nbsp;  &lt;param name="wmode" value="opaque"&gt;<br /> &nbsp;&nbsp;  &lt;embed pluginspage='http://www.macromedia.com/go/getflashplayer' width='100%'</p> <p>height='100%'<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  flashvars=''<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  src='EXPIframe.swf'<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name='flexapp'<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  wmode="opaque"<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  swLiveConnect="true"<br /> &nbsp;&nbsp;  /&gt;<br /> &lt;/object&gt;</p> <p>&lt;iframe id="myFrame" name="myFrame"<br /> &nbsp;&nbsp;&nbsp;  frameborder="0"<br /> &nbsp;&nbsp;&nbsp;  style="position:absolute;background-</p> <p>color:transparent;border:0px;visibility:hidden;"&gt;&lt;/iframe&gt;</p> <p>&lt;/body&gt;<br /> &lt;/html&gt;</p></div></div><img src ="http://www.blogjava.net/ivanwan/aggbug/371555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2012-03-08 22:48 <a href="http://www.blogjava.net/ivanwan/archive/2012/03/08/371555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex addEventListener增加事件侦听函数时传递多个参数</title><link>http://www.blogjava.net/ivanwan/archive/2011/12/16/366551.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Fri, 16 Dec 2011 09:43:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2011/12/16/366551.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/366551.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2011/12/16/366551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/366551.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/366551.html</trackback:ping><description><![CDATA[<div><span style="font-size: small;"><span id="ctl00_ContentPlaceHolderMain_lblcontent">今天在flex里通过addEventListener函数给控件动态加载click事件侦听函数时，除了事件本身传递的Event类型参数外，还需要传递更多的参数，在网上找了一段代码，用起来还不错，张贴到这里。<br /> <br /> package<br /> {<br /> &nbsp;&nbsp;&nbsp; public class EventArgExtend<br /> &nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public function EventArgExtend()<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public static function create(f:Function,... arg):Function <br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var F:Boolean=false;<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var _f:Function=function(e:*,..._arg)<br /> &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; _arg=arg<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!F)<br /> &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; F=true<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _arg.unshift(e)<br /> &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; f.apply(null,_arg)<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return _f;<br /> &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br /> &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public static function toString():String <br /> &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return "Class JEventDelegate";<br /> &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br /> &nbsp;&nbsp;&nbsp; }<br /> }<br /> <br /> =========================================== 使用的方式：<br /> txtShow.addEventListener(MouseEvent.CLICK,EventArgExtend.create(clickHandler,1,"str"));<br /> <br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private function clickHandler(e:Event,...arg):void<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Alert.show(arg[0].toString());<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Alert.show(arg[1].toString());<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br /> <br /> <br /> 还有另外一个方法，没有封装效果，不过代码更加容易理解：<br /> <br /> <span><span id="ls_contents-0">var sayHello:String = "欢迎光临www.FlashJ.cn -Flash,Ria技术博客";<br /> btn1.addEventListener(MouseEvent.CLICK,function&nbsp;(e:MouseEvent){clickHandlerWithArg(e,sayHello)});<br /> function&nbsp;clickHandlerWithArg(e:MouseEvent,arg:String):void<br /> {<br /> var&nbsp;out:String= e.target + "发出事件(有参数) :" + arg;<br /> trace(out);<br /> }</span> </span></span></span></div><img src ="http://www.blogjava.net/ivanwan/aggbug/366551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2011-12-16 17:43 <a href="http://www.blogjava.net/ivanwan/archive/2011/12/16/366551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将HTML页面嵌入FLEX应用中</title><link>http://www.blogjava.net/ivanwan/archive/2011/12/01/365287.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 01 Dec 2011 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2011/12/01/365287.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/365287.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2011/12/01/365287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/365287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/365287.html</trackback:ping><description><![CDATA[<div><div id="cnblogs_post_body"><p>先用现成的组件玩一下，一会再去看看组件源码研究一下。</p> <p><a href="http://code.google.com/p/flex-iframe/">http://code.google.com/p/flex-iframe/</a></p> <p>下载了flexiframe.swc，引入工程。</p> <p>flex代码</p> <p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;layout="absolute"<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:code="<a href="http://code.google.com/p/flex-iframe/">http://code.google.com/p/flex-iframe/</a>"&gt;<br />&nbsp;&lt;mx:Panel width="500"<br />&nbsp;&nbsp;&nbsp;&nbsp; height="400"&gt;</p> <p>&nbsp;&nbsp;&lt;code:IFrame id="googleIFrame"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label="Google"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source="<a href="http://www.google.com/">http://www.google.com</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width="100%"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height="100%"/&gt;<br />&nbsp;&lt;/mx:Panel&gt;</p> <p>&lt;/mx:Application&gt;</p> <p>运行，发现，可以了。</p> <p><img src="http://pic002.cnblogs.com/img/angelrong/201003/2010031013233066.png"  alt="" /></p> <p>&nbsp;</p> <p>不过，有个问题，鼠标点击别处的时候，网页消失了。</p> <p>找了很多地方，找到了解决方法。设置wmode。</p> <p>首先了解一下wmode是什么。</p> <p>window mode(wmode) <br /><br />wmode即窗口模式总共有三种：</p> <p>window 模式 <br /><br />默认情况下的显示模式，在这种模式下flash  player有自己的窗口句柄，这就意味着flash影片是存在于Windows中的一个显示实例，并且是在浏览器核心显示窗口之上的，所以flash只 是貌似显示在浏览器中，但这也是flash最快最有效率的渲染模式。由于他是独立于浏览器的HTML渲染表面，这就导致默认显示方式下flash总是会遮 住位置与他重合的所有DHTML层。 <br /><br />但是大多数苹果电脑浏览器会允许DHTML层显示在flash之上，但当flash影片播放时会出现比较诡异的现象，比如DHTML层像被flash刮掉一块一样显示异常。 <br /><br />Opaque 模式 <br /><br />这 是一种无窗口模式，在这种情况下flash player没有自己的窗口句柄，这就需要浏览器需要告诉flash  player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其他元素一样在同一个页面上,因此你就可 以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。 <br /><br />Transparent 模式 <br /><br />透明模式， 在这种模式下flash  player会将stage的背景色alpha值将为0并且只会绘制stage上真实可见的对象，同样你也可以使用z-index来控制flash影片的 深度值，但是与Opaque模式不同的是这样做会降低flash影片的回放效果，而且在9.0.115之前的flash  player版本设置wmode=&#8221;opaque&#8221;或&#8221;transparent&#8221;会导致全屏模式失效。</p> <p>&nbsp;</p> <p>这边，我们将wmode设置为transparent。</p> <p>我直接修改了工程的html模板，红色字体部分为新增加的代码。</p> <p>if ( hasProductInstall &amp;&amp; !hasRequestedVersion ) {<br />&nbsp;// DO NOT MODIFY THE FOLLOWING FOUR LINES<br />&nbsp;// Location visited after installation is complete if installation is required<br />&nbsp;var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";<br />&nbsp;var MMredirectURL = window.location;<br />&nbsp;&nbsp;&nbsp; document.title = document.title.slice(0, 47) + " - Flash Player Installation";<br />&nbsp;&nbsp;&nbsp; var MMdoctitle = document.title;</p> <p>&nbsp;AC_FL_RunContent(<br />&nbsp;&nbsp;"src", "playerProductInstall",<br />&nbsp;&nbsp;"FlashVars", "MMredirectURL="+MMredirectURL+'&amp;MMplayerType='+MMPlayerType+'&amp;MMdoctitle='+MMdoctitle+"",<br />&nbsp;&nbsp;"width", "${width}",<br />&nbsp;&nbsp;"height", "${height}",<br />&nbsp;&nbsp;"align", "middle",<br />&nbsp;&nbsp;"id", "${application}",<br />&nbsp;&nbsp;"quality", "high",<br />&nbsp;&nbsp;"bgcolor", "${bgcolor}",<br />&nbsp;&nbsp;"name", "${application}",<br />&nbsp;&nbsp;"allowScriptAccess","sameDomain",<br />&nbsp;&nbsp;"type", "application/x-shockwave-flash",<br />&nbsp;&nbsp;"pluginspage", "<a href="http://www.adobe.com/go/getflashplayer">http://www.adobe.com/go/getflashplayer</a>",<br />&nbsp;&nbsp;<span style="color: #ff0000;">"wmode","transparent"</span><br />&nbsp;);<br />} else if (hasRequestedVersion) {<br />&nbsp;// if we've detected an acceptable version<br />&nbsp;// embed the Flash Content SWF when all tests are passed<br />&nbsp;AC_FL_RunContent(<br />&nbsp;&nbsp;&nbsp;"src", "${swf}",<br />&nbsp;&nbsp;&nbsp;"width", "${width}",<br />&nbsp;&nbsp;&nbsp;"height", "${height}",<br />&nbsp;&nbsp;&nbsp;"align", "middle",<br />&nbsp;&nbsp;&nbsp;"id", "${application}",<br />&nbsp;&nbsp;&nbsp;"quality", "high",<br />&nbsp;&nbsp;&nbsp;"bgcolor", "${bgcolor}",<br />&nbsp;&nbsp;&nbsp;"name", "${application}",<br />&nbsp;&nbsp;&nbsp;"allowScriptAccess","sameDomain",<br />&nbsp;&nbsp;&nbsp;"type", "application/x-shockwave-flash",<br />&nbsp;&nbsp;&nbsp;"pluginspage", "<a href="http://www.adobe.com/go/getflashplayer">http://www.adobe.com/go/getflashplayer</a>",<br />&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">"wmode","transparent"</span><br />&nbsp;);<br />&nbsp; } else {&nbsp; // flash is too old or we can't detect the plugin<br />&nbsp;&nbsp;&nbsp; var alternateContent = 'Alternate HTML content should be placed here. '<br />&nbsp; &nbsp;+ 'This content requires the Adobe Flash Player. '<br />&nbsp;&nbsp; &nbsp;+ '&lt;a href=http://www.adobe.com/go/getflash/&gt;Get Flash&lt;/a&gt;';<br />&nbsp;&nbsp;&nbsp; document.write(alternateContent);&nbsp; // insert non-flash content<br />&nbsp; }</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&lt;embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"<br />&nbsp;&nbsp;&nbsp;&nbsp;width="${width}" height="${height}" name="${application}" align="center"<br />&nbsp;&nbsp;&nbsp;&nbsp;play="true"<br />&nbsp;&nbsp;&nbsp;&nbsp;loop="false"<br />&nbsp;&nbsp;&nbsp;&nbsp;quality="high"<br />&nbsp;&nbsp;&nbsp;&nbsp;allowScriptAccess="sameDomain"<br />&nbsp;&nbsp;&nbsp;&nbsp;type="application/x-shockwave-flash"<br />&nbsp;&nbsp;&nbsp;&nbsp;pluginspage="<a href="http://www.adobe.com/go/getflashplayer">http://www.adobe.com/go/getflashplayer</a>"<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">wmode="transparent"<span style="color: #000000;">&gt;</span></span><br />&nbsp;&nbsp;&nbsp;&lt;/embed&gt;</p> <p>&nbsp;</p> <p>保存，运行。问题解决了。</p></div></div><img src ="http://www.blogjava.net/ivanwan/aggbug/365287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2011-12-01 14:48 <a href="http://www.blogjava.net/ivanwan/archive/2011/12/01/365287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex中TextInput组件用restrict限制某些字符的输入用法</title><link>http://www.blogjava.net/ivanwan/archive/2011/11/21/364468.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Mon, 21 Nov 2011 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2011/11/21/364468.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/364468.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2011/11/21/364468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/364468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/364468.html</trackback:ping><description><![CDATA[<div><h3>restrict限制的意思</h3> <h3>1. 限制某个字符的输入，用符号 ^ 跟上要限制的字符，可跟多个字符&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 限制字符"~"的输入 --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="^~" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 限制字符"ab"的输入 --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="^ab" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />2. 设置只能输入某些字符，将允许输入的字符罗列出来即可，也可以用 - 组合表示字符范围&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 只能输入abc --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="abc" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 只能输入小写字母 --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="a-z" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 只能输入小写字母、大写字母和数字 --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="a-zA-Z0-9" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />3. 组合使用&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 只能输入数字和符号"." --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="0-9." /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 只能输入除ab之外的小写字母 --&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" /><br style="word-break: break-all; word-wrap: normal;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:TextInput id="xxx"&nbsp; restrict="a-z^ab" /&gt;&nbsp;<br style="word-break: break-all; word-wrap: normal;" />&nbsp;</h3> <p style="margin: 1.5em 0px; word-break: break-all; word-wrap: normal; padding: 0px;"><span style="font-size: larger; word-break: break-all; word-wrap: normal;"><span style="word-break: break-all; font-family: 楷体_GB2312; word-wrap: normal;">下面罗列出了一些常用的正则表达式：</span></span></p> <p style="margin: 1.5em 0px; word-break: break-all; word-wrap: normal; padding: 0px;"><span style="font-size: larger; word-break: break-all; word-wrap: normal;"><span style="word-break: break-all; font-family: 楷体_GB2312; word-wrap: normal;">^/d+$　　//匹配非负整数（正整数 + 0）<br style="word-break: break-all; word-wrap: normal;" />^[0-9]*[1-9][0-9]*$　　//匹配正整数<br style="word-break: break-all; word-wrap: normal;" />^((-/d+)|(0+))$　　//匹配非正整数（负整数 + 0）<br style="word-break: break-all; word-wrap: normal;" />^-[0-9]*[1-9][0-9]*$　　//匹配负整数<br style="word-break: break-all; word-wrap: normal;" />^-?/d+$　　　　//匹配整数<br style="word-break: break-all; word-wrap: normal;" />^/d+(/./d+)?$　　//匹配非负浮点数（正浮点数 + 0）<br style="word-break: break-all; word-wrap: normal;" />^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$　　//匹配正浮点数<br style="word-break: break-all; word-wrap: normal;" />^((-/d+(/./d+)?)|(0+(/.0+)?))$　　//匹配非正浮点数（负浮点数 + 0）<br style="word-break: break-all; word-wrap: normal;" />^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$　　//匹配负浮点数<br style="word-break: break-all; word-wrap: normal;" />^(-?/d+)(/./d+)?$　　//匹配浮点数<br style="word-break: break-all; word-wrap: normal;" />^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串<br style="word-break: break-all; word-wrap: normal;" />^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串<br style="word-break: break-all; word-wrap: normal;" />^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串<br style="word-break: break-all; word-wrap: normal;" />^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串<br style="word-break: break-all; word-wrap: normal;" />^/w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串<br style="word-break: break-all; word-wrap: normal;" />^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$　　　　//匹配email地址<br style="word-break: break-all; word-wrap: normal;" />^[a-zA-z]+://匹配(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$　　//匹配url</span></span></p> <p style="margin: 1.5em 0px; word-break: break-all; word-wrap: normal; padding: 0px;"><span style="font-size: larger; word-break: break-all; word-wrap: normal;"><span style="word-break: break-all; font-family: 楷体_GB2312; word-wrap: normal;">匹配中文字符的正则表达式： [/u4e00-/u9fa5]</span></span><span style="font-size: larger; word-break: break-all; word-wrap: normal;"><span style="word-break: break-all; font-family: 楷体_GB2312; word-wrap: normal;"><br style="word-break: break-all; word-wrap: normal;" />匹配双字节字符(包括汉字在内)：[^/x00-/xff]<br style="word-break: break-all; word-wrap: normal;" />匹配空行的正则表达式：/n[/s| ]*/r<br style="word-break: break-all; word-wrap: normal;" />匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;//&gt;|&lt;(.*) //&gt;/<br style="word-break: break-all; word-wrap: normal;" />匹配首尾空格的正则表达式：(^/s*)|(/s*$)<br style="word-break: break-all; word-wrap: normal;" />匹配Email地址的正则表达式：/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*<br style="word-break: break-all; word-wrap: normal;" />匹配网址URL的正则表达式：^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$<br style="word-break: break-all; word-wrap: normal;" />匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br style="word-break: break-all; word-wrap: normal;" />匹配国内电话号码：(/d{3}-|/d{4}-)?(/d{8}|/d{7})?<br style="word-break: break-all; word-wrap: normal;" />匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$<br style="word-break: break-all; word-wrap: normal;" />下表是元字符及其在正则表达式上下文中的行为的一个完整列表：<br style="word-break: break-all; word-wrap: normal;" />/ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。<br style="word-break: break-all; word-wrap: normal;" />^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 &#8217;/n&#8217; 或 &#8217;/r&#8217; 之后的位置。<br style="word-break: break-all; word-wrap: normal;" />$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 &#8217;/n&#8217; 或 &#8217;/r&#8217; 之前的位置。<br style="word-break: break-all; word-wrap: normal;" />* 匹配前面的子表达式零次或多次。<br style="word-break: break-all; word-wrap: normal;" />+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。<br style="word-break: break-all; word-wrap: normal;" />? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。<br style="word-break: break-all; word-wrap: normal;" />{n} n 是一个非负整数，匹配确定的n 次。<br style="word-break: break-all; word-wrap: normal;" />{n,} n 是一个非负整数，至少匹配n 次。<br style="word-break: break-all; word-wrap: normal;" />{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。<br style="word-break: break-all; word-wrap: normal;" />? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。<br style="word-break: break-all; word-wrap: normal;" />. 匹配除 &#8220;/n&#8221; 之外的任何单个字符。要匹配包括 &#8217;/n&#8217; 在内的任何字符，请使用象 &#8217;[./n]&#8217; 的模式。<br style="word-break: break-all; word-wrap: normal;" />(pattern) 匹配pattern 并获取这一匹配。<br style="word-break: break-all; word-wrap: normal;" />(?:pattern) 匹配pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。<br style="word-break: break-all; word-wrap: normal;" />x|y 匹配 x 或 y。<br style="word-break: break-all; word-wrap: normal;" />[xyz] 字符集合。<br style="word-break: break-all; word-wrap: normal;" />[^xyz] 负值字符集合。<br style="word-break: break-all; word-wrap: normal;" />[a-z] 字符范围，匹配指定范围内的任意字符。<br style="word-break: break-all; word-wrap: normal;" />[^a-z] 负值字符范围，匹配任何不在指定范围内的任意字符。<br style="word-break: break-all; word-wrap: normal;" />/b 匹配一个单词边界，也就是指单词和空格间的位置。<br style="word-break: break-all; word-wrap: normal;" />/B 匹配非单词边界。<br style="word-break: break-all; word-wrap: normal;" />/cx 匹配由x指明的控制字符。<br style="word-break: break-all; word-wrap: normal;" />/d 匹配一个数字字符。等价于 [0-9]。</span></span></p> <p style="margin: 1.5em 0px; word-break: break-all; word-wrap: normal; padding: 0px;"><span style="font-size: larger; word-break: break-all; word-wrap: normal;"><span style="word-break: break-all; font-family: 楷体_GB2312; word-wrap: normal;">/D 匹配一个非数字字符。等价于 [^0-9]。<br style="word-break: break-all; word-wrap: normal;" />/f 匹配一个换页符。等价于 /x0c 和 /cL。<br style="word-break: break-all; word-wrap: normal;" />/n 匹配一个换行符。等价于 /x0a 和 /cJ。<br style="word-break: break-all; word-wrap: normal;" />/r 匹配一个回车符。等价于 /x0d 和 /cM。<br style="word-break: break-all; word-wrap: normal;" />/s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ /f/n/r/t/v]。<br style="word-break: break-all; word-wrap: normal;" />/S 匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。<br style="word-break: break-all; word-wrap: normal;" />/t 匹配一个制表符。等价于 /x09 和 /cI。<br style="word-break: break-all; word-wrap: normal;" />/v 匹配一个垂直制表符。等价于 /x0b 和 /cK。<br style="word-break: break-all; word-wrap: normal;" />/w 匹配包括下划线的任何单词字符。等价于&#8217;[A-Za-z0-9_]&#8217;。<br style="word-break: break-all; word-wrap: normal;" />/W 匹配任何非单词字符。等价于 &#8217;[^A-Za-z0-9_]&#8217;。<br style="word-break: break-all; word-wrap: normal;" />/xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。<br style="word-break: break-all; word-wrap: normal;" />/num 匹配 num，其中num是一个正整数。对所获取的匹配的引用。<br style="word-break: break-all; word-wrap: normal;" />/n 标识一个八进制转义值或一个后向引用。如果 /n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。<br style="word-break: break-all; word-wrap: normal;" />/nm  标识一个八进制转义值或一个后向引用。如果 /nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm  为后向引用。如果 /nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字  (0-7)，则 /nm 将匹配八进制转义值 nm。</span></span></p></div><img src ="http://www.blogjava.net/ivanwan/aggbug/364468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2011-11-21 18:24 <a href="http://www.blogjava.net/ivanwan/archive/2011/11/21/364468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex学习-----Flex两页面间的传值</title><link>http://www.blogjava.net/ivanwan/archive/2011/10/21/361744.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Fri, 21 Oct 2011 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2011/10/21/361744.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/361744.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2011/10/21/361744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/361744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/361744.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #333333; font-family: Arial, Console, Verdana, 'Courier New'; font-size: 12px; line-height: normal; background-color: #ffffff; "><div id="article_content" class="article_content" style="margin-top: 20px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Courier New', Console, Verdana, 微软雅黑; font: normal normal normal 14px/26px Arial; "><p>众所周知Flex主要用于B/S结构程序的开发，凡是这类型的开发都存在页面间的传值的问题，通常一般的B/S开发主要不外乎使用地址修改法，隐藏表单域等方法，但是这些方法在Flex中确没有用，原因是应为Flex支持的模型和普通的B/S开发语言不一样，一般的B/S开发语言使用的主要是请求/响应模型，而Flex采用的是事件驱动模型(这种模型主要见于C/S结构程序),所以我们的Form表单等传值方法就无效了，哪么我们如何在两个这样模型的页面中传递数据呢？下面我们讲述下两种常用的传值方法:<br />一、&nbsp;利用ExternalInterface调用Javascript<br />a)&nbsp;该方法主要利用ExternalInterface的call方法调用Javascript函数，进而修改地址(有点类似于地址修改法),在接受页面上主要是靠BrowserManager获取地址栏信息，并利用URLUtil截取参数。<br />b)&nbsp;该方法虽然简单但是确调用了2种语言，给编写带来一定的困难<br /><strong><span style="color: #ff0000; ">发送页面代码(second.html)：<br /></span></strong>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;<span style="color: #0000ff; ">mx:Application</span>&nbsp;xmlns:mx="<a href="http://www.adobe.com/2006/mxml" style="color: #444444; text-decoration: none; "><span style="color: #800000; ">http://www.adobe.com/2006/mxml</span></a>" layout="<span style="color: #800000; ">absolute</span>"&gt;<br />&nbsp;<span style="color: #339966; ">&lt;mx:Script&gt;<br /></span>&nbsp;&nbsp;&lt;![CDATA[<br />&nbsp;<span style="color: #339966; ">&nbsp;<strong>function</strong></span>&nbsp;kk():<span style="color: #3366ff; "><strong>void</strong></span>{<br />&nbsp;&nbsp;<span style="color: #99ccff; "><strong>&nbsp;var</strong></span>&nbsp;val:String = myparam.text;<br />&nbsp;ExternalInterface.call<span style="color: #800000; "><span style="color: #000000; ">(</span><strong>"function(){window.location.href='http://localhost:8080/send/page.html#param1="</strong></span><span style="color: #000000; ">+</span>val+<strong><span style="color: #800000; ">"'}"</span></strong>);&nbsp;&nbsp;}<br />&nbsp;&nbsp;]]&gt;<br />&nbsp;<span style="color: #339966; ">&lt;/mx:Script&gt;<br /></span><span style="color: #3366ff; ">&nbsp;</span><span style="color: #0000ff; ">&lt;mx:TextInput</span>&nbsp; id="<span style="color: #800000; ">myparam</span>"&gt;<span style="color: #0000ff; ">&lt;/mx:TextInput&gt;</span><br />&nbsp;<span style="color: #0000ff; ">&lt;mx:Button</span>&nbsp;name="<span style="color: #800000; ">ok</span>" click="kk()" x="<span style="color: #800000; ">185</span>" label="<span style="color: #800000; ">提交</span>"&gt;<span style="color: #0000ff; ">&lt;/mx:Button&gt;</span><br /><span style="color: #0000ff; ">&lt;/mx:Application&gt;<br /></span><strong><span style="color: #ff0000; "><em>接收页面代码(page.html):<br /></em></span></strong>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br /><span style="color: #0000ff; ">&lt;mx:Application</span>&nbsp;xmlns:mx="<a href="http://www.adobe.com/2006/mxml" style="color: #444444; text-decoration: none; "><span style="color: #800000; ">http://www.adobe.com/2006/mxml</span></a>" layout="<span style="color: #800000; ">absolute</span>" creationComplete="init()"&nbsp;<span style="color: #0000ff; ">&gt;<br /></span>&nbsp;<span style="color: #339966; ">&lt;mx:Script&gt;<br /></span>&nbsp;&nbsp;&lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;<strong><span style="color: #0000ff; ">import</span></strong>&nbsp;mx.managers.IBrowserManager;<br />&nbsp;&nbsp;<strong><span style="color: #0000ff; ">&nbsp;import</span></strong>&nbsp;mx.managers.BrowserManager;<br />&nbsp;&nbsp;<strong><span style="color: #0000ff; ">&nbsp;import</span></strong>&nbsp;mx.utils.URLUtil;<br />&nbsp;&nbsp;&nbsp;[<span style="color: #0000ff; "><strong>Bindable</strong></span>]<br />&nbsp;&nbsp;<span style="color: #99ccff; ">&nbsp;<strong>var</strong></span>&nbsp;param:String;<br />&nbsp;&nbsp;<strong><span style="color: #339966; ">&nbsp;function</span></strong>&nbsp;init():<strong><span style="color: #0000ff; ">void</span></strong><br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<strong>&nbsp;<span style="color: #99ccff; ">var</span></strong>&nbsp;bm:IBrowserManager = BrowserManager.getInstance();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bm.init();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #99ccff; "><strong>var</strong></span>&nbsp;o:Object = URLUtil.stringToObject(bm.fragment,<span style="color: #800000; ">"&amp;"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;param = o.param1;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;]]&gt;<br />&nbsp;<span style="color: #339966; ">&lt;/mx:Script&gt;<br /></span>&nbsp;<span style="color: #0000ff; ">&lt;mx:TextInput</span>&nbsp;id="<span style="color: #800000; ">val</span>" text="<span style="color: #800000; ">{</span>param<span style="color: #800000; ">}</span>"<span style="color: #0000ff; ">&gt;</span><br />&nbsp;<span style="color: #0000ff; ">&lt;/mx:TextInput&gt;<br />&lt;/mx:Application&gt;<br /></span>二、&nbsp;利用SharedObject(本地共享对象传送)<br />a)&nbsp;该对象类似于Cookie，将需要传送的数据放在SharedObject对象中，而实际上在本机大致在（win2k和 win xp中，默认路径为C:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects (username为机器的用户名)）位置生成一个sol文件，该对象具有一个data属性，只要将你要传的数据按键值对放进去就好了，下次读取的时候就在本地直接读取即可<br />b)&nbsp;遗憾的是，该对象要求你自己创建还要自己清除，并且在写入数据时一定要强制刷新，否则数据无法希尔<br /><strong><span style="color: #ff0000; "><em>发送页面代码(index.html)：<br /></em></span></strong>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br /><span style="color: #0000ff; ">&lt;mx:Application</span>&nbsp;xmlns:mx="<a href="http://www.adobe.com/2006/mxml" style="color: #444444; text-decoration: none; "><span style="color: #800000; ">http://www.adobe.com/2006/mxml</span></a>" layout="<span style="color: #800000; ">absolute</span>"<span style="color: #0000ff; ">&gt;</span><br /><span style="color: #339966; ">&nbsp;&lt;mx:Script&gt;</span><br />&nbsp;&nbsp;&lt;![CDATA[<br />&nbsp;&nbsp;<span style="color: #339966; "><strong>&nbsp;function</strong></span>&nbsp;s mit():<span style="color: #0000ff; "><strong>void<br /></strong></span>&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #99ccff; "><strong>&nbsp;var</strong></span>&nbsp;param:String = myparam.text;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #339966; "><em>//创建全局SharedObject,如果不用全局就去掉后面的"/",一旦去掉那么cookie只能被自己的Application使用，其他Applicaiton无法看见<br />&nbsp;&nbsp;&nbsp;&nbsp;//myparam是要求在本机创建一个叫cookie.sol的文件<br /></em></span>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #99ccff; ">var&nbsp;</span></strong>obj:SharedObject = SharedObject.getLocal<span style="color: #800000; "><strong>("cookie"</strong><span style="color: #000000; ">,</span><strong>"/"</strong><span style="color: #000000; ">);</span><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;obj.data.username=myparam.text;<br />&nbsp;&nbsp;&nbsp;&nbsp;obj.flush();<br />&nbsp;&nbsp;&nbsp;&nbsp;<em><span style="color: #339966; ">//调用URLReqst将跳转到second.html页面<br /></span></em>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #99ccff; "><strong>var&nbsp;</strong></span>reqst:URLReqst =<span style="color: #0000ff; "><strong>new</strong></span>&nbsp;URLReqst();<br />&nbsp;&nbsp;&nbsp;&nbsp;reqst.url<span style="color: #800000; "><strong>="second.html";</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;navigateToURL(reqst);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;]]&gt;<br />&nbsp;<span style="color: #339966; ">&lt;/mx:Script&gt;<br /></span>&nbsp;<span style="color: #0000ff; ">&lt;mx:TextInput</span>&nbsp;id="<span style="color: #800000; ">myparam</span>"&gt;<span style="color: #0000ff; ">&lt;/mx:TextInput&gt;</span><br />&nbsp;<span style="color: #0000ff; ">&lt;mx:Button</span>&nbsp;label="<span style="color: #800000; ">提交</span>" click="s mit()" x="<span style="color: #800000; ">177</span>"&gt;<span style="color: #0000ff; ">&lt;/mx:Button&gt;</span><br /><span style="color: #0000ff; ">&lt;/mx:Application&gt;<br /></span><strong><span style="color: #ff0000; "><em>接收页面代码(second.html):<br /></em></span></strong>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br /><span style="color: #0000ff; ">&lt;mx:Application</span>&nbsp;xmlns:mx="<a href="http://www.adobe.com/2006/mxml" style="color: #444444; text-decoration: none; "><span style="color: #800000; ">http://www.adobe.com/2006/mxml</span></a>" layout="<span style="color: #800000; ">absolute</span>" creationComplete="init()"<span style="color: #0000ff; ">&gt;</span><br />&nbsp;<span style="color: #339966; ">&lt;mx:Script&gt;<br /></span>&nbsp;&nbsp;&lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;[<span style="color: #0000ff; "><strong>Bindable</strong></span>]<br />&nbsp;&nbsp;&nbsp;<span style="color: #99ccff; "><strong>var&nbsp;</strong></span>param:String;<br />&nbsp;&nbsp;&nbsp;<strong><span style="color: #339966; ">function</span></strong>&nbsp;init():<span style="color: #0000ff; "><strong>void<br /></strong></span>&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #339966; "><em>&nbsp;//在本地找到myparam.sol文件<br /></em></span>&nbsp;&nbsp;&nbsp;<span style="color: #99ccff; "><strong>&nbsp;var</strong></span>&nbsp;obj:SharedObject =SharedObject.getLocal(<span style="color: #800000; "><strong>"cookie"</strong></span>,<strong><span style="color: #800000; ">"/"</span></strong>);<br />&nbsp;&nbsp;&nbsp;<span style="color: #339966; "><em>&nbsp;//读取前页存入的数据<br /></em></span>&nbsp;&nbsp;&nbsp;&nbsp;param = obj.data.username;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #339966; ">//用完了别忘了将myparam.sol文件删除<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;obj.clear();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;]]&gt;<br />&nbsp;<span style="color: #339966; ">&lt;/mx:Script&gt;<br /></span>&nbsp;<span style="color: #0000ff; ">&lt;mx:TextInput</span>&nbsp;id="<span style="color: #800000; ">mypar</span>" text="<span style="color: #800000; ">{</span>param<span style="color: #800000; ">}</span>"&gt;<span style="color: #0000ff; ">&lt;/mx:TextInput&gt;</span><br /><span style="color: #0000ff; ">&lt;/mx:Application&gt;</span></p><div><span style="color: #0000ff; "><br /></span></div></div></span><img src ="http://www.blogjava.net/ivanwan/aggbug/361744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2011-10-21 16:32 <a href="http://www.blogjava.net/ivanwan/archive/2011/10/21/361744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>