<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_OldHawk</title><subtitle type="text">菜地一块，欢迎拍砖</subtitle><id>http://feed.cnblogs.com/blog/u/22810/rss</id><updated>2010-12-24T09:19:42Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/22810/rss"/><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/12/24/1916216.html</id><title type="text">How to merge two images into one using Actionscript</title><summary type="text">Well, it’s very easy, using BitmapData and Bitmap. This example makes things a bit more complex to show some principles. Hope you learn something out of it off course.</summary><published>2010-12-24T09:20:00Z</published><updated>2010-12-24T09:20:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/12/24/1916216.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/12/24/1916216.html"/><content type="html">&lt;p&gt;&lt;span &gt;W&lt;/span&gt;ell, it&amp;rsquo;s very easy, using BitmapData and Bitmap. This example makes things a bit more complex to show some principles. Hope you learn something out of it off course.&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;// we'll scale the first ( background ) image by 50%&#xD;
var s : Number = .5;&#xD;
&#xD;
// create a matrix to make the scalilng of the bitmap possible&#xD;
var scaleMatrix : Matrix = new Matrix();&#xD;
&#xD;
// apply the scaling to the matrix&#xD;
scaleMatrix.scale(s,s);&#xD;
&#xD;
// create a bitmapdata object from an existing bitmap ( "bmp" in this case )&#xD;
var scaledBitmap : BitmapData = new BitmapData(bmp.width*s,bmp.height*s,false,0);&#xD;
&#xD;
// draw the content and scale it using the matrix&#xD;
scaledBitmap.draw(bmp,scaleMatrix);&#xD;
&#xD;
// we have an embedded asset called "flickr", a flickr logo in gif format&#xD;
var icon : Bitmap = new flickr() as Bitmap;&#xD;
&#xD;
// let's place it in the bottom right corner&#xD;
var ix : Number = scaledBitmap.width-icon.width;&#xD;
var ij : Number = scaledBitmap.height-icon.height;&#xD;
&#xD;
// create a matrix for the position of the icon&#xD;
// note the use of the ix and ij variables in the parameters&#xD;
var positionMatrix : Matrix = new Matrix(1,0,0,1,ix,ij);&#xD;
&#xD;
// draw the icon bmp to the bitmapdata&#xD;
scaledBitmap.draw( icon, positionMatrix );&#xD;
&#xD;
// add the new, merged, bitmap to your displaylist&#xD;
var bmp : Bitmap = new Bitmap( scaledBitmap );&#xD;
addChild( bmp ); &#xD;
&#xD;
// that's it!&lt;br /&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;PS: as per user comments I&amp;rsquo;ve also uploaded an example to use in the Flash IDE ( *.fla file ) &amp;ndash; the above example assumes you&amp;rsquo;re using Flash Builder or another editor&lt;/p&gt;&#xD;
&lt;p&gt;I do have to say I don&amp;rsquo;t understand why people try to merge two bitmaps in Flash using the IDE. You could just as easily create a MovieClip with the two bitmaps on top of each other. Or am I missing something? Tell me in the comments!&lt;/p&gt;&#xD;
&lt;p&gt;Download the example *.fla file here: &lt;a href="http://www.webdevotion.be/blog/wp-content/mergy.fla.zip"&gt;http://www.webdevotion.be/blog/wp-content/mergy.fla.zip&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1916216.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/12/24/1916216.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896748.html</id><title type="text">Fms3中client端与server端交互方式汇总</title><summary type="text">Responder 类提供了一个对象，该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。它有2个参数：第1个是成功调用回调的方法，第2个参数是调用失败时回调的方法</summary><published>2010-12-04T20:17:00Z</published><updated>2010-12-04T20:17:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896748.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896748.html"/><content type="html">&lt;p&gt;fms3中server端代码是写在asc文件中，客户端是broadcastMsg.swf&lt;br /&gt;2者交互方式我总结如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. 客户端呼叫服务器&lt;/strong&gt;&lt;br /&gt;服务器端main.asc代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_191551"  style="display: none;"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_191551" style="display: inline;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #000000;"&gt;Client.prototype.serverFun1&amp;nbsp;=&amp;nbsp;function(value)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;"value="+value&lt;br /&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;客户端代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_191731"  style="display: none;"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_191731" style="display: inline;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="absolute"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="12"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;creationComplete&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="init()"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.controls.Alert;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;netConnection:NetConnection;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;responder:Responder;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;appServer:String="rtmp://192.168.0.249/TestCode1";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;init():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection&amp;nbsp;=&amp;nbsp;new&amp;nbsp;NetConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.connect(appServer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.client=this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;onClick(evt:MouseEvent):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;responder&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Responder(OkFun,ErrorFun);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.call("serverFun1",responder,"va");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;OkFun(re:String):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(re);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;ErrorFun(info:Object):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;nbsp;"error:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;info.description&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;nbsp;"error:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;info.code&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;]]&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Button&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;x&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="43"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;y&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="65"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;label&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="调用服务器"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btn"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;click&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="onClick(event)"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;代码说明：&lt;br /&gt;Responder 类提供了一个对象，该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。&lt;br /&gt;它有2个参数：第1个是成功调用回调的方法，第2个参数是调用失败时回调的方法&lt;/p&gt;&#xD;
&lt;p&gt;call () 方法&amp;nbsp;&amp;nbsp; &lt;br /&gt;public function call(command:String, responder:Responder, ... arguments):void &lt;br /&gt;第1个参数：服务器端方法名&lt;br /&gt;第2个参数：可选对象，用于处理服务器的返回值&lt;br /&gt;第3个参数：传递给服务器端方法的值&lt;br /&gt;&amp;nbsp;&lt;br /&gt;本例题：点击按钮后，调用asc文件中的serverFun1方法,并传递参数&amp;ldquo;va&amp;rdquo;给它，serverFun1方法处理后方法一个值，要是成功就回调OkFun，并显示&amp;ldquo;value=va&amp;rdquo;字符串，要是调用失败（可能会遇到特定于当前操作的网络操作错误或与当前连接状态有关的错误）将回调ErrorFun，并显示错误信息&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. 服务器端呼叫指定的客户端&lt;/strong&gt;&lt;br /&gt;服务器端main.asc代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_192021" &gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_192021" style="display: none;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #000000;"&gt;var&amp;nbsp;handlerObject&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{};&lt;br /&gt;&lt;br /&gt;handlerObject.prototype.onResult&amp;nbsp;=&amp;nbsp;function(&amp;nbsp;result&amp;nbsp;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trace(&amp;nbsp;result&amp;nbsp;);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;handlerObject.prototype.onStatus&amp;nbsp;=&amp;nbsp;function(&amp;nbsp;info&amp;nbsp;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trace(&amp;nbsp;"error:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;info.description&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trace(&amp;nbsp;"error:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;info.code&amp;nbsp;);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;application.onConnect&amp;nbsp;=&amp;nbsp;function(&amp;nbsp;client&amp;nbsp;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;this.acceptConnection(&amp;nbsp;client&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;var&amp;nbsp;msg&amp;nbsp;=&amp;nbsp;"Hello&amp;nbsp;client,&amp;nbsp;your&amp;nbsp;IP&amp;nbsp;is:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;client.ip;&lt;br /&gt;&amp;nbsp;&amp;nbsp;client.call(&amp;nbsp;"asyncServerCall",&amp;nbsp;new&amp;nbsp;handlerObject,&amp;nbsp;msg&amp;nbsp;);&lt;br /&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;客户端代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_192248" &gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_192248" style="display: none;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="absolute"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="12"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;creationComplete&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="init()"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.controls.Alert;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;netConnection:NetConnection;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;appServer:String="rtmp://192.168.0.249/TestCode1";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;init():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection&amp;nbsp;=&amp;nbsp;new&amp;nbsp;NetConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.connect(appServer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.client=this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;asyncServerCall(&amp;nbsp;msg:String&amp;nbsp;)&amp;nbsp;:&amp;nbsp;String&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;nbsp;msg&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;"I&amp;nbsp;got&amp;nbsp;your&amp;nbsp;message&lt;img src="http://images.cnblogs.com/dot.gif" alt="" /&gt;&amp;nbsp;Thanks&amp;nbsp;Server!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;]]&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;代码说明：&lt;br /&gt;Client.call() 在Flash客户机上异步的执行一个方法，并把值从Flash客户机返回到服务器。&lt;br /&gt;用法 clientObject.call(methodName, [resultObj, [p1, ..., pN]])&lt;br /&gt;第1个参数：客户端的方法名&lt;br /&gt;第2个参数：当发送者期待一个来自客户机的返回值时需要这个参数。如果参数被传递但没有返回值被期待的话，则传递值null。结果对象可以是你定义的任何对象，并且，为了有用起见，这个结果对象应该有两个方法-onResult和onStatus，这些方法会在结果到达时被调用。如果远端方法的调用是成功的，则resultObj.onResult事件会被触发；否则，resultObj.onStatus事件将被触发。&lt;br /&gt;第3个参数：传递给客户端的方法的值&lt;/p&gt;&#xD;
&lt;p&gt;本例题：启动后,连接成功，服务器接收请求,并调用改客户端的asyncServerCall方法(必须公有),asyncServerCall方法处理后返回值，要是处理成功onResult事件就被触发，要是处理失败onStatus事件就被触发。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. 服务器端呼叫所有的客户端(广播)&lt;/strong&gt;&lt;br /&gt;服务器端main.asc代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_192350"  style="display: none;"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_192350" style="display: inline;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #000000;"&gt;application.onConnect&amp;nbsp;=&amp;nbsp;function(currentClient)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application.acceptConnection(currentClient);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application.broadcastMsg("showServerMsg",application.clients.length&amp;nbsp;);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;客户端代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span id="Code_Closed_Text_192447"  style="display: none;"&gt;Code&lt;/span&gt;&lt;span id="Code_Open_Text_192447" style="display: inline;"&gt;&lt;br /&gt;&lt;!--&lt;/p&gt;&#xD;
&lt;p&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;/p&gt;&#xD;
&lt;p&gt;--&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="absolute"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&amp;nbsp;fontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="12"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;creationComplete&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="init()"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.controls.Alert;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;netConnection:NetConnection;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;appServer:String="rtmp://192.168.0.249/TestCode1";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;init():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection&amp;nbsp;=&amp;nbsp;new&amp;nbsp;NetConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.connect(appServer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netConnection.client=this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;showServerMsg(&amp;nbsp;n:Number&amp;nbsp;)&amp;nbsp;:void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;msg:String&amp;nbsp;="已经有"+n.toString()+"位用户连接";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;nbsp;msg&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;]]&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;mx:Application&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;代码说明：&lt;br /&gt;Application.broadcastMsg():把一条消息广播到所有连接的客户机,给每个客户机广播&lt;br /&gt;这个方法相当于循环遍历Application.clients数组并在每一个独立的客户机上调用Client.call()，但这个方法的效率更高（尤其是当连接的客户机数量很大时）。唯一的不同是当你调用broadcastMsg()时你不能指定一个响应对象，除此以外，两种语法是一样的。&lt;br /&gt;等同于如下：&lt;br /&gt;//遍历客户端列表，分别call他们&lt;br /&gt;for(var i=0;i&amp;lt;application.clients.length;i++) {&lt;br /&gt;&amp;nbsp;application.clients[i].call("showServerMsg"，application.clients.length);&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;本例题：一旦有客户机连接fms，就给每个连接的客户机广播，并显示出"已经有n位用户连接"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. 服务器端呼叫服务器端&lt;br /&gt;&lt;/strong&gt;NetConnection.call&lt;br /&gt;用法： &lt;br /&gt;NetConnection.call(methodName, [resultObj, p1, ..., pN]) &lt;br /&gt;调用一个 Flash Communication Server 或者其他应用服务器上的命令或方法。用法和客户端的 NetConnection.call 的用法一样。他调用一个远程服务器上的方法。我就没贴代码&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1896748.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896748.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896747.html</id><title type="text">Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)</title><summary type="text">在视频程序的编写过程中，我们经常要使用摄像头，在使用摄像头前有必要对摄像头的现有状态做个检测:1.被占用2.没安装摄像头3.正常</summary><published>2010-12-04T20:12:00Z</published><updated>2010-12-04T20:12:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896747.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896747.html"/><content type="html">&lt;div &gt;&lt;!-- 文章导航 --&gt;&amp;nbsp;&#xD;
&lt;p&gt;在视频程序的编写过程中，我们经常要使用摄像头，在使用摄像头前有必要对摄像头的现有状态做个检测:&lt;/p&gt;&#xD;
&lt;p&gt;1.被占用&lt;/p&gt;&#xD;
&lt;p&gt;2.没安装摄像头&lt;/p&gt;&#xD;
&lt;p&gt;3.正常&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看下面代码：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &lt;br /&gt;&amp;lt;mx:WindowedApplication xmlns:mx="&lt;a href="http://www.adobe.com/2006/mxml%22"&gt;http://www.adobe.com/2006/mxml"&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout="absolute" creationComplete="init()"&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var camera:Camera; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var isExistsCamera:Boolean=false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var isBusyCamera:Boolean=false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var intervalId:uint; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var times:int; &lt;/p&gt;&#xD;
&lt;p&gt;private function init():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; camera=Camera.getCamera(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000;"&gt;if (camera == null) &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000;"&gt;if (Camera.names.length &amp;lt;= 0)&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isExistsCamera=false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show("没安装摄像头"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.vdpaly.attachCamera(this.camera); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isCameraBusy(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function isCameraBusy():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.intervalId=setInterval(callback,50); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;private function callback():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trace("currentFPS=" + camera.currentFPS.toString()); &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;if (camera.currentFPS &amp;gt; 0) &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //视频设备可用 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clearInterval(this.intervalId); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isBusyCamera=false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show("摄像头正常"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; times++; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trace("times=" + times.toString()); &lt;/p&gt;&#xD;
&lt;p&gt;if (times &amp;gt; 30) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //视频设备忙 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clearInterval(intervalId); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.isBusyCamera=true; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show("摄像头被占用"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;private function cl():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show(this.camera.currentFPS.toString()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;]]&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VideoDisplay&amp;nbsp;&amp;nbsp; id="vdpaly"&amp;nbsp; click="cl()" x="44" y="64" width="232" height="236"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;lt;/mx:WindowedApplication&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;代码说明：&lt;/p&gt;&#xD;
&lt;p&gt;camera == null，那么就是没安装摄像头&lt;/p&gt;&#xD;
&lt;p&gt;如果摄像头被占用，那么camera.currentFPS 肯定不会大 于0,而是等于0&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1896747.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896747.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896745.html</id><title type="text">推荐几个Adobe Flex Builder 3的插件(代码格式化和fms服务器通讯文件(main.asc)编写)</title><summary type="text">编写FMS服务器端脚本时，最头疼的莫过于AS1的语法了。习惯了AS2、3后，在没有代码提示的环境下，写代码确实是件很头疼的事，这个插件就可以发挥作用了</summary><published>2010-12-04T20:06:00Z</published><updated>2010-12-04T20:06:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896745.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896745.html"/><content type="html">&lt;p&gt;&lt;strong&gt;1.Fms plugins&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;编写FMS服务器端脚本时，最头疼的莫过于AS1的语法了。习惯了AS2、3后，在没有代码提示的环境下，写代码确实是件很头疼的事，这个插件就可以发挥作用了。 &lt;/p&gt;&#xD;
&lt;p&gt;Flash Media Server Eclipse Plugins：&lt;a href="http://fczone.com/eclipse/" target="_blank"&gt;http://fczone.com/eclipse/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;JAR下载地址：&lt;a href="http://fczone.com/getFile?id=FMSProject_1.1.0.0.jar" target="_blank"&gt;http://fczone.com/getFile?id=FMSProject_1.1.0.0.jar&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;把它放到你的eclipse中的plugins文件夹下，不管你是用Flex独立版还是插件版，其实都是eclipse啦，重启你的eclipse，你会在Perspective中找到"Flash Media Server"，就是它啦&lt;/p&gt;&#xD;
&lt;p&gt;看下面几张图片,这个插件还支持发布asc文件的功能&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/aierong/WindowsLiveWriter/AdobeFlexBuilder3_D63E/image_thumb.png" alt="" width="531" height="503" /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/aierong/WindowsLiveWriter/AdobeFlexBuilder3_D63E/image_thumb_1.png" alt="" width="625" height="537" /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/aierong/WindowsLiveWriter/AdobeFlexBuilder3_D63E/image_thumb_2.png" alt="" width="628" height="536" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用也是很简单： &lt;/p&gt;&#xD;
&lt;p&gt;Window -&amp;gt; Preference：中的Flash Media Server &lt;/p&gt;&#xD;
&lt;p&gt;你可以设置你工作环境的色调配置 &lt;/p&gt;&#xD;
&lt;p&gt;Debug Servers： &lt;/p&gt;&#xD;
&lt;p&gt;默认是你本地服务器 &lt;/p&gt;&#xD;
&lt;p&gt;设置好你的用户名和密码，这个Plugin会控制你的服务器装载和卸载程序 &lt;/p&gt;&#xD;
&lt;p&gt;Publish Settings： &lt;/p&gt;&#xD;
&lt;p&gt;就是你的项目发布出去的存放点啦，本地就改好位置Path，记得{Application Name}不要被自己和谐掉:-)，{Application Name}会根据变量名自己发布 &lt;/p&gt;&#xD;
&lt;p&gt;如果是异地发布到服务器，目前还只支持FTP发布，设置跟一般的FTP设置没什么区别。 &lt;/p&gt;&#xD;
&lt;p&gt;Perspective切换到Flash Media Server &lt;/p&gt;&#xD;
&lt;p&gt;Navigator面板，右键New -&amp;gt; Serverside Application &lt;/p&gt;&#xD;
&lt;p&gt;设置好项目名、平台版本和存放点就OK啦 &lt;/p&gt;&#xD;
&lt;p&gt;接着就是设置Debug模式和Publish模式，这个会跟上面在Preference的设置相关，默认还是把它的RobustDebug加进去吧 &lt;/p&gt;&#xD;
&lt;p&gt;对于Debug Instance不要随意修改，这会影响debug的成功，默认Flash Media Server启用一个Application（在Applications文件夹下的任何一个文件夹都会成为一个独立的Application），会默认创建_definst_记录Application相关，包括SharedObject的fso文件记录还有flv之类的，除非你修改了Flash Media Server的配置xml，所以如果没有相应的修改就采用默认的就可以了。 &lt;/p&gt;&#xD;
&lt;p&gt;其他就没什么了，创建好项目就有main.asc就是Application的入口文件，它会把RobustDebug.asc导入，正如注释表明，如果不需要就去掉吧:-) &lt;/p&gt;&#xD;
&lt;p&gt;之后就自由发挥吧，看下作者录制的功能录像会更好点：&lt;a href="http://fczone.com/eclipse/demo/debugDemo/index.html" target="_blank"&gt;http://fczone.com/eclipse/demo/debugDemo/index.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后一个爽的功能就是支持Actionscript2 Class的导入 &lt;/p&gt;&#xD;
&lt;p&gt;右键你的Flash Media Server项目，import...，在Flash Media Server节点中有import actionscript2 class的选项，之后就选你的as2文件，其实就是把的as2类用as1的方式来写，有个问题就是你的as2类文件的编码一定要注意，不然导入可能会出现乱码滴 &lt;/p&gt;&#xD;
&lt;p&gt;最后说明下：以上很多东西都是看到作者文档就翻译过来的，写到错误的地方估计也少不了，如果发现有错，大家提醒下我吧，更详细大家就关注作者的blog吧&lt;a href="http://fczone.com/" target="_blank"&gt;http://fczone.com&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.代码格式化&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果你还在为官方Flex Builder不能够将代码有效的格式化排版而头疼，你可以尝试一下这个插件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://sourceforge.net/projects/flexformatter/"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;项目地址：&lt;a href="http://sourceforge.net/projects/flexformatter/" target="_blank"&gt;http://sourceforge.net/projects/flexformatter/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用方法：&lt;/p&gt;&#xD;
&lt;p&gt;1.将jar包放在FB或者eclipse的plugins文件夹里 &lt;br /&gt;2.重启E或FB，必要时使用-clean参数重启 &lt;br /&gt;3.工具栏出现2个新图标，对于一段程序，选中后，点图标，就格式化了。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;图片如下:&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/aierong/WindowsLiveWriter/AdobeFlexBuilder3_D63E/image_thumb_3.png" alt="" width="614" height="208" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1896745.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896745.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896744.html</id><title type="text">flex4中list与itemRenderer项目渲染器中子对象之间访问</title><summary type="text">itemRenderer，可以理解为数据的表现方式，具体地说，是指显示每一条数据时采用的形式。在使用数据处理类组件时，我们只需要把数据按照一定的格式组织好，然后赋予给组件，剩下的事就不用费心了</summary><published>2010-12-04T19:52:00Z</published><updated>2010-12-04T19:52:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896744.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896744.html"/><content type="html">&lt;p&gt;&lt;strong&gt;什么是itemRenderer? &lt;br /&gt;&lt;/strong&gt;itemRenderer，可以理解为数据的表现方式，具体地说，是指显示每一条数据时采用的形式。在使用数据处理类组件时，我们只需要把数据按照一定的格式组织好，然后赋予给组件，剩下的事就不用费心了。 &lt;br /&gt;每一个组件都有默认的itemRenderer，比如List组件： &lt;br /&gt;List组件默认的itemRenderer类似Label组件，只简单显示一行文本。如右图所示，红色方框选中的是一个itemRenderer。 &lt;br /&gt;本质上，itemRenderer和其它容器类组件没有区别，里面可以包括任意的可视化元素，包括文本、图片、视频等，只要是Flex支持的视觉元素，都可以。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;自定义itemRenderer&lt;/strong&gt; &lt;br /&gt;组件默认的itemRenderer都过于简单，如果想加强表现力，就必须创建个性化的itemRenderer。 &lt;br /&gt;自定义itemRenderer有两种方式：一种是嵌入式，直接写在组件的标签中，所有的代码都集中在一个MXML文件中；另一种是把itemRenderer独立出来，形成一个MXML组件或ActionScript类。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;itemRenderer可以很方便的对数据进行呈现，但有时候我们需要在组件和itemRenderer之间访问，怎么办呢？找到以下几种方法：&lt;/p&gt;&#xD;
&lt;p&gt;1、List可以通过dataGroup这个成员对象来访问下面的ItemRenderer，比如 userList.dataGroup.getChildAt(ii) as ItemRenderer。要注意要等list初始化后才能获取，不然userList.dataGroup.numChildren会为0。&lt;/p&gt;&#xD;
&lt;p&gt;2、在ItemRenderer中则通过owner这个对象来访问List。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;代码说明：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;先自定义一个名称为:itemh的MXML&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &lt;br /&gt;&amp;lt;mx:HBox xmlns:mx="&lt;a href="http://www.adobe.com/2006/mxml%22"&gt;http://www.adobe.com/2006/mxml"&lt;/a&gt; width="145" height="41" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:VBox width="40" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Image click="this.parentDocument.imgclick(event)" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data="{data.label}" source="assets\tx.JPG" width="40"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VBox width="95" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Label text="{data.label}" toolTip="{data.label}" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Image toolTip="点我查看视频"&amp;nbsp; buttonMode="true" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source="assets\camera.JPG" width="16" height="20"&amp;nbsp; /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;主调用应用中:&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:ArrayCollection id="arrColl_keySetup"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:source&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Array id="arr_keysetup"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="00" sel="false" label="aaa"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="11" sel="false" label="bbb"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="22" sel="true" label="ccc"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Array&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:source&amp;gt; &lt;br /&gt;&amp;lt;/mx:ArrayCollection&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:TileList id="tlist" maxColumns="1" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataProvider="{arrColl_keySetup}"&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; itemRenderer="itemh" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x="34" y="10" width="148"&amp;gt; &lt;br /&gt;&amp;lt;/mx:TileList&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;给TileList的itemRenderer属性赋值itemh,并绑定数组集合类就可以了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;动态指定itemRenderer&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;利用ClassFactory类可以动态指定itemRenderer&lt;/p&gt;&#xD;
&lt;p&gt;代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;private function initTileList():void &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.tlist.dataProvider=this.arrColl_keySetup; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.tlist.itemRenderer = new&amp;nbsp; ClassFactory(itemh); &lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:TileList id="tlist" maxColumns="1" x="34" y="10" width="148" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete="initTileList()"&amp;gt; &lt;br /&gt;&amp;lt;/mx:TileList&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;至于怎样在项目渲染器访问主调用应用中的成员，可用parentDocument来引用； &lt;br /&gt;反过来，主调用应用要访问项目渲染器中的成员，一般都是通过在项目渲染器先派发事件，然后在主调用应用中注册事件侦听器来实现。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;例如：在项目渲染器中点击图片事件，然后通知主调用应用&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:Image &lt;strong&gt;click="this.parentDocument.imgclick(event)"&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data="{data.label}" source="assets\tx.JPG" width="40"/&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;在主调用应用中定义：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;public &lt;/strong&gt;function imgclick(evt:MouseEvent):void &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var img:Image=evt.currentTarget as Image; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show(img.data.toString()); &lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;记住得是public的,不同类之间是无法访问私有方法的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其实上面的功能也可以用dispatchEvent来实现&lt;/p&gt;&#xD;
&lt;p&gt;先定义一个事件类&lt;/p&gt;&#xD;
&lt;p&gt;package &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.Event; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class myEvent extends Event &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public var data:String; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function myEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false,data:String="") &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(type, bubbles, cancelable); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.data=data; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;然后在itemh中将事件调度到事件流中&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:Image click="clickHandler(event)" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data="{data.label}" source="assets\tx.JPG" width="40"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;private function clickHandler(evt:MouseEvent):void &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var img:Image=evt.currentTarget as Image; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dispatchEvent(new&amp;nbsp; myEvent("img_click",true,true,img.data.toString())); &lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;最后在主调应用中监听事件&lt;/p&gt;&#xD;
&lt;p&gt;private function initTileList():void &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.tlist.addEventListener("img_click",onItemimg_click); &lt;br /&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;private function onItemimg_click(evt:myEvent):void &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show(evt.data); &lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:TileList id="tlist" maxColumns="1" x="34" y="10" width="148" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataProvider="{arrColl_keySetup}" itemRenderer="itemh" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete="initTileList()"&amp;gt; &lt;br /&gt;&amp;lt;/mx:TileList&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其实也可以用&amp;lt;mx:itemRenderer&amp;gt;和&amp;lt;mx:Component&amp;gt;标签来声明itemRenderer&lt;/p&gt;&#xD;
&lt;p&gt;例如以上代码可以改为：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:Script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Image; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;public &lt;/strong&gt;function imgclick(evt:MouseEvent):void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var img:Image=evt.currentTarget as Image; &lt;/p&gt;&#xD;
&lt;p&gt;Alert.show(img.data.toString()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt; &lt;br /&gt;&amp;lt;/mx:Script&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:ArrayCollection id="arrColl_keySetup"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:source&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Array id="arr_keysetup"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="00" sel="false" label="aaa"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="11" sel="false" label="bbb"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Object data="22" sel="true" label="ccc"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Array&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:source&amp;gt; &lt;br /&gt;&amp;lt;/mx:ArrayCollection&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;mx:TileList id="tlist" maxColumns="1" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataProvider="{arrColl_keySetup}"&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x="34" y="10" width="148"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:itemRenderer&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Component&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:HBox width="145" height="41" horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VBox width="40" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Image &lt;strong&gt;click="this.parentDocument.imgclick(event)" &lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data="{data.label}" buttonMode="true" source="assets\tx.JPG" width="40"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VBox width="95" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Label text="{data.label}" toolTip="{data.label}"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Image toolTip="点我查看视频" buttonMode="true" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source="assets\camera.JPG" width="16" height="20"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:HBox&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Component&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:itemRenderer&amp;gt; &lt;br /&gt;&amp;lt;/mx:TileList&amp;gt; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1896744.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/12/05/1896744.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890407.html</id><title type="text">install flashpolicyd</title><summary type="text">I wrote this on RedHat Enterprise 5.1, you need to install Ruby that is included in the base repositories now and it has no external requirements not met by Ruby. </summary><published>2010-11-28T12:07:00Z</published><updated>2010-11-28T12:07:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890407.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890407.html"/><content type="html">Installation¶&#xD;
I wrote this on RedHat Enterprise 5.1, you need to install Ruby that is included in the base repositories now and it has no external requirements not met by Ruby. &#xD;
&#xD;
On the download site is a RPM that will install the daemon, but I include below full manual install procedures that will help you get it going on other distros. &#xD;
&#xD;
These instructions apply to RedHat and includes a service that will activate the daemon at startup. &#xD;
&#xD;
Once Ruby installed grab the tarball and extract it: &#xD;
&#xD;
# tar -xvzf flashpolicyd-0.1.tgz &#xD;
# cd flashpolicyd-0.1 &#xD;
# mv flashpolicyd /usr/sbin &#xD;
# mv flashpolicyd.init /etc/init.d/&#xD;
&#xD;
You need to create a XML file to serve up, by default this should be placed in /etc/flashpolicy.xml. Next you need to enable the service, this runs as root since it has to listen on port 843. &#xD;
&#xD;
# chkconfig --add flashpolicyd &#xD;
# chkconfig flashpolicyd on&#xD;
&#xD;
This assumes a lot of defaults, you can override these in /etc/sysconfig/flashpolicyd a sample file can be seen below: &#xD;
&#xD;
TIMEOUT=10 XML=/etc/flashpolicy.xml LOGFREQ=1800 LOGFILE=/var/log/flashpolicyd.log USER=nobodyRC Script Configuration &#xD;
TIMEOUT If a request does not complete in this many seconds the socket will disconnect &#xD;
XML The file to serve up to clients &#xD;
LOGFREQ This is a frequency in seconds that the server will log general stats to log file &#xD;
LOGFILE The logfile to write, the file will auto rotate based on size, you should not be rotating it with your systems logrotation tool &#xD;
USER The user to run as after opening the port &#xD;
&#xD;
&#xD;
If you are a Puppet user I've also included a module that will install this for you, locations etc are correct as for Red Hat Enterprise, see the puppet subdirectory. &#xD;
&#xD;
Usage¶&#xD;
The server runs on port 843 as the root user, you can run it with --verbose manually and you'll get a lot of debug in your log file. &#xD;
&#xD;
I, [2008-09-13T08:05:48.443178 #2941]  INFO -- : -604375936: Had 1246803 clients and 37262 bogus clients. Uptime 58 days 14 hours 30 min. 0 connection(s) in use now.A bogus client is any client that did not end in a successful request, this may be due to timeouts or simply not receiving a valid request from the client. &#xD;
&#xD;
The script includes a complete --help output but you need to install Ruby::RDoc - you can find this in the ruby-rdoc package from RedHat - to use the --help directly, you could just look at the top of the script the help is all there. &#xD;
&#xD;
The daemon responds to several signals that can be sent using the kill command: &#xD;
&#xD;
Signal Description &#xD;
USR1 Prints a single line stat message, during normal running this stat will be printed every 30 minutes by default, settable using --logfreq &#xD;
USR2 Dumps the current threads and their statusses &#xD;
HUP Toggles debug mode which will print more lines in the log file &#xD;
TERM Exit the process closing all the sockets &#xD;
&#xD;
&#xD;
Monitoring¶&#xD;
The tarball includes a check script for this service. The script will work with Nagios and other compatible monitoring systems, to get it going is pretty simple: &#xD;
&#xD;
% ./check_flashpolicyd.rb --host your.server.com OK: Got XML response in 0.043149 seconds  % ./check_flashpolicyd.rb --host your.server.com CRITICAL: 5 seconds TIMEOUT exceededYou can extend the timeout using the --timeout option to the check script. Making this work with your nagios installation is out of the scope of this doc. &#xD;
&#xD;
Known Issues¶&#xD;
&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1890407.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890407.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890311.html</id><title type="text">Linux环境如何升级Python</title><summary type="text">之前的Python不用卸载，新装的Python与之不会冲突，比如安装完成之后，会有一个python2.5即是我们安装的最新版本Python。</summary><published>2010-11-28T09:34:00Z</published><updated>2010-11-28T09:34:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890311.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890311.html"/><content type="html">&lt;p&gt;不用卸载，先试试命令：yum update python。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;行了就OK。不行看下面：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;先下载源码包，任意一个即可：&lt;/p&gt;&#xD;
&lt;p&gt;（1）gzip-compressed源码：Python-2.5.4.tgz&lt;/p&gt;&#xD;
&lt;p&gt;（2）bzip2-compressed源码：Python-2.5.4.tar.bz2&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;解压文件包：&lt;/p&gt;&#xD;
&lt;p&gt;tar -zxvf Python-2.5.4.tgz (或者bzcat Python-2.5.4.tar.bz2)&lt;/p&gt;&#xD;
&lt;p&gt;cd Python-2.5.4&lt;/p&gt;&#xD;
&lt;p&gt;./configure&lt;/p&gt;&#xD;
&lt;p&gt;make&lt;/p&gt;&#xD;
&lt;p&gt;make install&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;查看Python的版本&lt;/p&gt;&#xD;
&lt;p&gt;python &amp;ndash;V&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;查看Python执行文件位置&lt;/p&gt;&#xD;
&lt;p&gt;which python&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;之前的Python不用卸载，新装的Python与之不会冲突，比如安装完成之后，会有一个python2.5即是我们安装的最新版本Python。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文来自CSDN博客，转载请标明出处：&lt;a href="http://blog.csdn.net/MONKEY_D_MENG/archive/2010/11/24/6032476.aspx"&gt;http://blog.csdn.net/MONKEY_D_MENG/archive/2010/11/24/6032476.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1890311.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/11/28/1890311.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/09/02/1815737.html</id><title type="text">linux运行级别查看并更改研究</title><summary type="text">Linux运行级别从0～6，共7个。0：关机。不能将系统缺省运行级别设置为0，否则无法启动。1：单用户模式，只允许root用户对系统进行维护。2：多用户模式，但不能使用NFS（相当于Windows下的网上邻居）3：字符界面的多用户模式。4：未定义。5：图形界面的多用户模式。6：重启。不能将系统缺省运行级别设置为0，否则会一直重启。</summary><published>2010-09-02T02:38:00Z</published><updated>2010-09-02T02:38:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/09/02/1815737.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/09/02/1815737.html"/><content type="html">&lt;p&gt;Linux运行级别从0～6，共7个。&lt;/p&gt;&#xD;
&lt;p&gt;0：关机。不能将系统缺省运行级别设置为0，否则无法启动。&lt;/p&gt;&#xD;
&lt;p&gt;1：单用户模式，只允许root用户对系统进行维护。&lt;/p&gt;&#xD;
&lt;p&gt;2：多用户模式，但不能使用NFS（相当于Windows下的网上邻居）&lt;/p&gt;&#xD;
&lt;p&gt;3：字符界面的多用户模式。&lt;/p&gt;&#xD;
&lt;p&gt;4：未定义。&lt;/p&gt;&#xD;
&lt;p&gt;5：图形界面的多用户模式。&lt;/p&gt;&#xD;
&lt;p&gt;6：重启。不能将系统缺省运行级别设置为0，否则会一直重启。&lt;/p&gt;&#xD;
&lt;p&gt;查看运行级别命令：&lt;/p&gt;&#xD;
&lt;p&gt;runlevel&lt;/p&gt;&#xD;
&lt;p&gt;先后显示系统上一次和当前运行级别。如果不存在上一次运行级别，则用N表示。&lt;/p&gt;&#xD;
&lt;p&gt;改变提供运行级别命令：&lt;/p&gt;&#xD;
&lt;p&gt;init ［0123456］&lt;/p&gt;&#xD;
&lt;p&gt;关于运行等级&lt;/p&gt;&#xD;
&lt;p&gt;这个问题似乎和这篇文章的的主题无关，但是介于现在越来越多的linux新手遇到linux图形界面的问题，而且在中文输入法设置过程中也牵涉到这些问题，因此想顺便提一下。&lt;/p&gt;&#xD;
&lt;p&gt;现在的linux安装完成后，默认就运行在第5个系统运行级别。在SYSTEM V 风格的UNIX系统中，系统被分为不同的运行级别，这和BSD分支的UNIX有所不同，常用的为0~6七个级别:&lt;/p&gt;&#xD;
&lt;p&gt;0　关机&lt;/p&gt;&#xD;
&lt;p&gt;1　单用户&lt;/p&gt;&#xD;
&lt;p&gt;2　不带网络的多用户&lt;/p&gt;&#xD;
&lt;p&gt;3　带网络的多用户&lt;/p&gt;&#xD;
&lt;p&gt;4　保留，用户可以自给定义&lt;/p&gt;&#xD;
&lt;p&gt;5　图形界面的多用户&lt;/p&gt;&#xD;
&lt;p&gt;6　重起系统&lt;/p&gt;&#xD;
&lt;p&gt;由于现在的Linux系统安装完后就运行在第5个级别，即系统启动后直接进入图形界面，而不用在字符模式下登录后用startx或者xinit 来起动图形界面。这样看起来很方便。但是有什么坏处呢？　一旦你改变了某些设置，显示出问题的时候，系统不断在图形和字符间派徊，新手又不知道如何应对， 十分麻烦，而且对于学习研究Linux的人来说，这样不利于了解和学习Linux底层的一些东西。很早就用Linux的老用户都知道，过去的Linux如 redhat6.0，都是默认运行接别为3，即使后来的RedHat9.0也可以在安装时候选默认字符登录还是图形登录。但现在的FC系列和其他大多数版 本都不管三七二十一直接帮用户选择了直接图形界面登录。虽然对于大多数菜鸟来说，Linux确实越来越简单了，但是很多乐趣，那些新手也体验不到了。&lt;/p&gt;&#xD;
&lt;p&gt;也许你不相信，直接图形登录到系统确实会有很多问题，建议在系统安装完成后把系统的默认运行等级设置在第3级，在字符终端登录后，再手工输入startx 命令起动图形界面。可以用如下的方法修改：&lt;/p&gt;&#xD;
&lt;p&gt;用文本编辑器修改　/etc/inittab文件，把&lt;/p&gt;&#xD;
&lt;p&gt;代码:&lt;/p&gt;&#xD;
&lt;p&gt;id:5:initdefault:这一行，修改成&lt;/p&gt;&#xD;
&lt;p&gt;代码:&lt;/p&gt;&#xD;
&lt;p&gt;id:3:initdefault:保存后就reboot重起，系统就默认起动到字符界面。不同运行级别之间的差别的在于系统默认起动的服务的不同，如运行级别3默认不启动X图形界面服务，而运行级别5 却默认起动。本质上是没有区别的，更无所谓不同级别间功能强弱的问题。用户完全可自给定义不同级别的默认服务。在任何运行级别，用户都可用init 命令来切换到其他运行级别&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1815737.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/09/02/1815737.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/06/28/1766532.html</id><title type="text">Flash builder 4 (Flex builder 4) 正式版序列号生成器</title><summary type="text">Flash builder 4 (Flex builder 4) 正式版序列号生成器flash_builder_4_keygen.rar，点此下载</summary><published>2010-06-28T02:35:00Z</published><updated>2010-06-28T02:35:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/06/28/1766532.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/06/28/1766532.html"/><content type="html">&lt;p&gt;Flash builder 4 (Flex builder 4) 正式版序列号生成器flash_builder_4_keygen.rar，&lt;a href="http://files.cnblogs.com/taobataoma/flash_builder_4_keygen.rar"&gt;点此下载&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1766532.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/06/28/1766532.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/taobataoma/archive/2010/06/13/1757703.html</id><title type="text">（转）基于svnserve的服务器，权限文件authz配置的常见问题及解答</title><summary type="text">为什么我的客户端没有写权限？为什么我的权限没有起作用？</summary><published>2010-06-13T04:39:00Z</published><updated>2010-06-13T04:39:00Z</updated><author><name>OldHawk</name><uri>http://www.cnblogs.com/taobataoma/</uri></author><link rel="alternate" href="http://www.cnblogs.com/taobataoma/archive/2010/06/13/1757703.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/taobataoma/archive/2010/06/13/1757703.html"/><content type="html">&lt;table cellpadding="0" cellspacing="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  id="postmessage_621"&gt;最近在我用Subversion&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E8%AE%BA%E5%9D%9B" onclick="tagshow(event)" &gt;论坛&lt;/span&gt;(&lt;a target="_blank" href="http://www.iusesvn.com/bbs%29"&gt;http://www.iUseSVN.com/bbs)&lt;/a&gt;经常有人提到这样的问题：&lt;br /&gt;为什么我的&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E5%AE%A2%E6%88%B7%E7%AB%AF" onclick="tagshow(event)" &gt;客户端&lt;/span&gt;没有写&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E6%9D%83%E9%99%90" onclick="tagshow(event)" &gt;权限&lt;/span&gt;？&lt;br /&gt;为什么我的权限没有起作用？&lt;br /&gt;&lt;br /&gt;总结他们的配置，发现&lt;br /&gt;都是用&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=svn" onclick="tagshow(event)" &gt;svn&lt;/span&gt;serve作为&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E6%9C%8D%E5%8A%A1%E5%99%A8" onclick="tagshow(event)" &gt;服务器&lt;/span&gt;，&lt;br /&gt;都在&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=svnserve" onclick="tagshow(event)" &gt;svnserve&lt;/span&gt;.&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=conf" onclick="tagshow(event)" &gt;conf&lt;/span&gt;中使用了&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=authz" onclick="tagshow(event)" &gt;authz&lt;/span&gt;-db选项&lt;br /&gt;&lt;br /&gt;原因可能如下：&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1，配置authz时，没有注意svnserve启动参数-r所指定的&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E7%9B%AE%E5%BD%95" onclick="tagshow(event)" &gt;目录&lt;/span&gt;。&lt;/strong&gt;&lt;br /&gt;这里有两种情况：&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;A:-r直接指定到&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E7%89%88%E6%9C%AC%E5%BA%93" onclick="tagshow(event)" &gt;版本库&lt;/span&gt;(称之为单库svnserve方式)&lt;/span&gt;&lt;br /&gt;比如，有一个库project1，位于D:\svn\project1&lt;br /&gt;使用以下&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E5%91%BD%E4%BB%A4" onclick="tagshow(event)" &gt;命令&lt;/span&gt;启动svnserve&#xD;
&lt;div &gt;&#xD;
&lt;div id="code0"&gt;&lt;ol&gt;&#xD;
&lt;li&gt;svnserve -d -r D:\svn\project1&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;em onclick="copycode($('code0'));"&gt;复制&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E4%BB%A3%E7%A0%81" onclick="tagshow(event)" &gt;代码&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&#xD;
在这种情况下，一个svnserve只能为一个版本库工作&lt;br /&gt;authz&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E6%96%87%E4%BB%B6" onclick="tagshow(event)" &gt;文件&lt;/span&gt;如果配置成下面这样就是错的，&#xD;
&lt;div &gt;&#xD;
&lt;div id="code1"&gt;&lt;ol&gt;&#xD;
&lt;li&gt;[groups]&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=admin" onclick="tagshow(event)" &gt;admin&lt;/span&gt;=user1&lt;/li&gt;&#xD;
&lt;li&gt;dev=user2&lt;/li&gt;&#xD;
&lt;li&gt;[project1:/]&lt;/li&gt;&#xD;
&lt;li&gt;@admin=rw&lt;/li&gt;&#xD;
&lt;li&gt;@doc=r&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;em onclick="copycode($('code1'));"&gt;复制代码&lt;/em&gt;&lt;/div&gt;&#xD;
应该配置成&#xD;
&lt;div &gt;&#xD;
&lt;div id="code2"&gt;&lt;ol&gt;&#xD;
&lt;li&gt;[groups]&lt;/li&gt;&#xD;
&lt;li&gt;admin=user1&lt;/li&gt;&#xD;
&lt;li&gt;dev=user2&lt;/li&gt;&#xD;
&lt;li&gt;[/]&lt;/li&gt;&#xD;
&lt;li&gt;@admin=rw&lt;/li&gt;&#xD;
&lt;li&gt;@doc=r&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;em onclick="copycode($('code2'));"&gt;复制代码&lt;/em&gt;&lt;/div&gt;&#xD;
因为[project1:/]表示库project1的根目录，而按上面的启动参数，是没有库的概念的。&lt;br /&gt;使用类似这样的URL：svn://192.168.0.1/　即可&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E8%AE%BF%E9%97%AE" onclick="tagshow(event)" &gt;访问&lt;/span&gt;project1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;B:-r指定到版本库的上级目录(称之为多库svnserve方式)&lt;/span&gt;&lt;br /&gt;同样，有一个库project1，位于D:\svn\project1&lt;br /&gt;如果使用以下命令启动svnserve&#xD;
&lt;div &gt;&#xD;
&lt;div id="code3"&gt;&lt;ol&gt;&#xD;
&lt;li&gt;svnserve -d -r D:\svn&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;em onclick="copycode($('code3'));"&gt;复制代码&lt;/em&gt;&lt;/div&gt;&#xD;
这种情况，一个svnserve可以为多个版本库工作，&lt;br /&gt;这时如果想限制指定库的指定目录，就应该指定具体的库，像这样&#xD;
&lt;div &gt;&#xD;
&lt;div id="code4"&gt;&lt;ol&gt;&#xD;
&lt;li&gt;[groups]&lt;/li&gt;&#xD;
&lt;li&gt;admin=user1&lt;/li&gt;&#xD;
&lt;li&gt;dev=user2&lt;/li&gt;&#xD;
&lt;li&gt;[project1:/]&lt;/li&gt;&#xD;
&lt;li&gt;@admin=rw&lt;/li&gt;&#xD;
&lt;li&gt;@doc=r&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;em onclick="copycode($('code4'));"&gt;复制代码&lt;/em&gt;&lt;/div&gt;&#xD;
如果此时你还用[/]，则表示所有库的根目录，同理，[/src]表示所有库的根目录下的src目录&lt;br /&gt;使用类似这样的URL：svn://192.168.0.1/project1　即可访问project1&lt;br /&gt;这样的URL：svn://192.168.0.1/project2　即可访问project2&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2，对&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E4%B8%AD%E6%96%87" onclick="tagshow(event)" &gt;中文&lt;/span&gt;目录进行权限控制时，没有将权限文件authz改为utf-8格式。&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;svn对于非英文文件名和目录名使用utf-8格式编码处理，要对中文目录进行正确控制，&lt;br /&gt;应该使用无BOM的utf-8格式，如何将默认的文件转为utf-8，&lt;br /&gt;我使用的是UltraEdit的菜单&amp;amp;&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=quot" onclick="tagshow(event)" &gt;quot&lt;/span&gt;;ASCII to UTF-8 (Unicode Editing)&amp;amp;quot;。在UltraEdit的配置中，可以&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E8%AE%BE%E7%BD%AE" onclick="tagshow(event)" &gt;设置&lt;/span&gt;有无BOM&lt;br /&gt;&lt;br /&gt;更多参考&lt;span href="http://www.cnblogs.com/taobataoma/admin/tag.php?name=%E6%96%87%E6%A1%A3" onclick="tagshow(event)" &gt;文档&lt;/span&gt;：&lt;br /&gt;（配置权限控制文件）&lt;a target="_blank" href="http://bbs.iusesvn.com/thread-6-1-1.html"&gt;http://bbs.iusesvn.com/thread-6-1-1.html&lt;/a&gt;&lt;br /&gt;（中文目录权限控制）&lt;a target="_blank" href="http://bbs.iusesvn.com/thread-41-1-1.html"&gt;http://bbs.iusesvn.com/thread-41-1-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;（Apache的单库多库问题）&lt;a target="_blank" href="http://bbs.iusesvn.com/thread-158-1-1.html"&gt;http://bbs.iusesvn.com/thread-158-1-1.html&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/taobataoma/aggbug/1757703.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/taobataoma/archive/2010/06/13/1757703.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
