<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<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>郑州网建 - Flash_Flex_AIR</title><link>http://camnpr.com/</link><description>Good Good Study ,Day Day Up! - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>豫ICP备10013645号 Copyright 2009-2022 camnpr.com</copyright><pubDate>Mon, 09 Mar 2026 02:58:14 +0800</pubDate><item><title>详解 Uploadify 3.2 参数属性、事件、方法函数（和v2.x有区别，buttonImg-buttonImage）</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/flash-air/1270.html</link><pubDate>Fri, 27 Jun 2014 16:10:31 +0800</pubDate><guid>http://camnpr.com/flash-air/1270.html</guid><description><![CDATA[<p>uploadify最新版本是3.2，它和版本2.x有很多区别，最明显的就是参数名称都变了，所以在更新时要注意。比如：按钮变成图片的key由buttonImg变成了buttonImage。坑爹不？ 呵呵。</p><table border="1" width="100%" cellspacing="0" cellpadding="5" data-mce-selected="1"><caption><strong>一、属性</strong></caption><tbody><tr align="center"><td>属性名称</td><td>默认值</td><td>说明</td></tr><tr><td>auto</td><td>true</td><td>设置为true当选择文件后就直接上传了，为false需要点击上传按钮才上传 。</td></tr><tr><td>buttonClass</td><td>”</td><td>按钮样式</td></tr><tr><td>buttonCursor</td><td>‘hand’</td><td>鼠标指针悬停在按钮上的样子</td></tr><tr><td>buttonImage</td><td>null</td><td>浏览按钮的图片的路径 。</td></tr><tr><td>buttonText</td><td>‘SELECT FILES’</td><td>浏览按钮的文本。</td></tr><tr><td>checkExisting</td><td>false</td><td>文件上传重复性检查程序，检查即将上传的文件在服务器端是否已存在，存在返回1，不存在返回0</td></tr><tr><td>debug</td><td>false</td><td>如果设置为true则表示启用SWFUpload的调试模式</td></tr><tr><td>fileObjName</td><td>‘Filedata’</td><td>文件上传对象的名称，如果命名为’the_files’，PHP程序可以用$_FILES['the_files']来处理上传的文件对象。</td></tr><tr><td>fileSizeLimit</td><td>0</td><td><p>上传文件的大小限制 ，如果为整数型则表示以KB为单位的大小，如果是字符串，则可以使用(B, KB, MB, or GB)为单位，比如’2MB’；</p><p>如果设置为0则表示无限制</p></td></tr><tr><td>fileTypeDesc</td><td>‘All Files’</td><td>这个属性值必须设置fileTypeExts属性后才有效，用来设置选择文件对话框中的提示文本，如设置fileTypeDesc为“请选择rar doc pdf文件”</td></tr><tr><td>fileTypeExts</td><td>‘*.*’</td><td>设置可以选择的文件的类型，格式如：’*.doc;*.pdf;*.rar’ 。</td></tr><tr><td>formData</td><td>&nbsp;<wbr></td><td>JSON格式上传每个文件的同时提交到服务器的额外数据，可在’onUploadStart’事件中使用’settings’方法动态设置。</td></tr><tr><td>height</td><td>30</td><td>设置浏览按钮的高度 ，默认值</td></tr><tr><td>itemTemplate</td><td>false</td><td>用于设置上传队列的HTML模版，可以使用以下标签：<br>instanceID – Uploadify实例的ID<br>fileID – 列队中此文件的ID,或者理解为此任务的ID<br>fileName – 文件的名称<br>fileSize – 当前上传文件的大小<br>插入模版标签时使用格式如：${fileName}</td></tr><tr><td>method</td><td>Post</td><td>提交方式Post或Get</td></tr><tr><td>multi</td><td>true</td><td>设置为true时可以上传多个文件。</td></tr><tr><td>overrideEvents</td><td>&nbsp;<wbr></td><td>设置哪些事件可以被重写，JSON格式，如：’overrideEvents’ : ['onUploadProgress']</td></tr><tr><td>preventCaching</td><td>true</td><td>如果为true，则每次上传文件时自动加上一串随机字符串参数，防止URL缓存影响上传结果</td></tr><tr><td>progressData</td><td>‘percentage’</td><td>设置上传进度显示方式，percentage显示上传百分比，speed显示上传速度</td></tr><tr><td>queueID</td><td>false</td><td>设置上传队列容器DOM元素的ID，如果为false则自动生成一个队列容器。</td></tr><tr><td>queueSizeLimit</td><td>999</td><td>队列最多显示的任务数量，如果选择的文件数量超出此限制，将会出发onSelectError事件。<br>注意此项并非最大文件上传数量，如果要限制最大上传文件数量，应设置uploadLimit。</td></tr><tr><td>removeCompleted</td><td>true</td><td>是否自动将已完成任务从队列中删除，如果设置为false则会一直保留此任务显示。</td></tr><tr><td>removeTimeout</td><td>3</td><td>如果设置了任务完成后自动从队列中移除，则可以规定从完成到被移除的时间间隔。</td></tr><tr><td>requeueErrors</td><td>false</td><td>如果设置为true，则单个任务上传失败后将返回错误，并重新加入任务队列上传。</td></tr><tr><td>successTimeout</td><td>30</td><td>文件上传成功后服务端应返回成功标志，此项设置返回结果的超时时间</td></tr><tr><td>swf</td><td>‘uploadify.swf’</td><td>uploadify.swf 文件的相对路径。</td></tr><tr><td>uploader</td><td>uploadify.php</td><td>后台处理程序的相对路径。</td></tr><tr><td>uploadLimit</td><td>999</td><td>最大上传文件数量，如果达到或超出此限制将会触发onUploadError事件。</td></tr><tr><td>width</td><td>120</td><td>设置文件浏览按钮的宽度。</td></tr></tbody></table><p>&nbsp;<wbr></p><table border="1" width="100%" cellspacing="0" cellpadding="5"><caption><strong>二、事件</strong></caption><tbody><tr align="center"><td>事件名称</td><td>说明</td></tr><tr><td>onCancel(file)</td><td><p>当点击文件队列中文件的关闭按钮或点击取消上传时触发，file参数为被取消上传的文件对象</p></td></tr><tr><td>onClearQueue(queueItemCount)</td><td>当调用函数cancel方法时触发，queueItemCount参数为被取消上传的文件数量。</td></tr><tr><td>onDestroy()</td><td>当destory方法被调用时触发</td></tr><tr><td>onDialogClose(queueData)</td><td><p>当文件浏览框关闭时触发，如果将此事件被重写，则当向队列添加文件上传出错时不会弹出错误消息提示。</p><p>queueData对象包含如下属性：</p><ul><li>filesSelected 文件选择对话框中共选择了多少个文件</li><li>filesQueued 已经向队列中添加了多少个文件</li><li>filesReplaced 已经向队列中替换了多少个文件</li><li>filesCancelled 取消了多少个文件 filesErrored 出错了多少个文件</li></ul></td></tr><tr><td>onDialogOpen()</td><td>当文件选择对话框弹出时立即出发，但可能在文件选择对话框被关闭之前并不能全部执行。</td></tr><tr><td>onDisable()</td><td>当disable方法禁用Uploadify上传按钮时被调用时触发。</td></tr><tr><td>onEnable()</td><td>当disable方法启用Uploadify上传按钮时被调用时触发。</td></tr><tr><td>onFallback()</td><td>当Uploadify初始化过程中检测到当前浏览器不支持flash时触发。</td></tr><tr><td>onInit()</td><td>首次初始化Uploadify结束时触发。</td></tr><tr><td>onQueueComplete(queueData)</td><td><p>文件上传队列处理完毕后触发。</p><p>queueData对象包含如下属性：</p><ul><li>uploadsSuccessful – 上传成功的文件数量</li><li>uploadsErrored – 上传失败的文件数量</li></ul></td></tr><tr><td>onSelect(file)</td><td><p>选择文件后向队列中添加每个上传任务时都会触发。</p></td></tr><tr><td>onSelectError(file, errorCode, errorMsg)</td><td><p>选择文件后向队列中添加每个上传任务时如果失败都会触发。</p><p>file – 文件对象</p><p>errorCode – 错误代码如下：</p><ul><li>QUEUE_LIMIT_EXCEEDED – 任务数量超出队列限制；</li><li>FILE_EXCEEDS_SIZE_LIMIT – 文件大小超出限制；</li><li>ZERO_BYTE_FILE – 文件大小为0</li><li>INVALID_FILETYPE – 文件类型不符合要求</li></ul><p>errorMsg – 错误提示，可通过’this.queueData.errorMsg’定制</p></td></tr><tr><td>onSWFReady()</td><td>Flash文件载入成功后触发。</td></tr><tr><td>onUploadComplete(file)</td><td>每个文件上传完毕后无论成功与否都会触发。</td></tr><tr><td>onUploadError(file, errorCode, errorMsg, errorString)</td><td>文件上传出错时触发，参数由服务端程序返回。</td></tr><tr><td>onUploadProgress(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal)</td><td><p>处理上传队列的过程中会多次触发此事件，每当任务状态有更新时都会触发。</p><ul><li>file – 文件对象</li><li>bytesUploaded – 已上传的字节数</li><li>bytesTotal – 文件总字节数</li><li>totalBytesUploaded – 当前任务队列中全部文件已上传的总字节数</li><li>totalBytesTotal – 当前任务队列中全部文件的总字节数</li></ul></td></tr><tr><td>onUploadStart(file)</td><td>当文件即将开始上传时立即触发</td></tr><tr><td>onUploadSuccess(file, data, response)</td><td><p>当文件上传成功时触发</p><ul><li>file – 文件对象</li><li>data – 服务端输出返回的信息</li><li>response – 有输出时为true,如果无响应为false，如果返回的是false,当超过successTimeout设置的时间后假定为true</li></ul></td></tr></tbody></table><table border="1" width="100%" cellspacing="0" cellpadding="5"><caption><strong>三、方法</strong></caption><tbody><tr align="center"><td>方法名称</td><td>说明</td><td>应用举例</td></tr><tr><td>cancel(fileID, suppressEvent)</td><td><p>取消队列中的任务，不管此任务是否已经开始上传</p><ul><li>fileID – 要取消的文件ID，如果为空则取消队列中第一个任务，如果为’*'则取消所有任务</li><li>suppressEvent – 是否阻止触发onUploadCancel事件，当清空队列时非常实用。</li></ul></td><td><p><a>取消第一个</a></p><p><a>清空队列</a></p><p><a>开始上传所有任务</a></p></td></tr><tr><td>destroy()</td><td>销毁Uploadify实例并将文件上传按钮恢复到原始状态</td><td><a>销毁Uploadify实例</a></td></tr><tr><td>disable(setDisabled)</td><td><p>禁用或启用文件浏览按钮</p><p>setDisabled – 设置为true表示禁用，false为启用</p></td><td><p><a>禁用按钮</a></p><p><a>启用按钮</a></p></td></tr><tr><td>settings(name, value, resetObjects)</td><td><p>获取或设置Uploadify实例参数</p><ul><li>name – 属性名称，如果只提供属性名称则表示获取其值</li><li>value – 属性值</li><li>resetObjects – 设置为true时，更新postData对象将清空现有的值。否则，新的值将被添加到其末尾。</li></ul></td><td><p>$(‘#file_upload’).uploadify(‘settings’,'buttonText’,'BROWSE’);</p><p>$(‘#file_upload’).uploadify(‘settings’,'buttonText’));</p></td></tr><tr><td>stop()</td><td>停止当前正在上传的任务</td><td><p><a>开始上传</a></p><p><a>停止上传</a></p></td></tr><tr><td>upload(fileID)</td><td><span style="font-family: inherit;" data-mce-style="font-family: inherit;">立即上传指定的文件，如果fileID为’*'表示上传所有文件，要指定上传多个文件，则将每个文件的fileID作为一个参数</span></td><td><a>开始上传所有文件</a></td></tr></tbody></table><div id="mceResizeHandlen" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: n-resize; margin: 0px; padding: 0px; left: 578px; top: 34.5px; display: block;"></div><div id="mceResizeHandlee" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: e-resize; margin: 0px; padding: 0px; left: 1151.5px; top: 499.5px; display: block;"></div><div id="mceResizeHandles" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: s-resize; margin: 0px; padding: 0px; left: 578px; top: 964.5px; display: block;"></div><div id="mceResizeHandlew" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: w-resize; margin: 0px; padding: 0px; left: 4.5px; top: 499.5px; display: block;"></div><div id="mceResizeHandlenw" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: nw-resize; margin: 0px; padding: 0px; left: 4.5px; top: 34.5px; display: block;"></div><div id="mceResizeHandlene" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: ne-resize; margin: 0px; padding: 0px; left: 1151.5px; top: 34.5px; display: block;"></div><div id="mceResizeHandlese" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: se-resize; margin: 0px; padding: 0px; left: 1151.5px; top: 964.5px; display: block;"></div><div id="mceResizeHandlesw" data-mce-bogus="true" class="mce-resizehandle" contenteditable="false" unselectabe="true" style="cursor: sw-resize; margin: 0px; padding: 0px; left: 4.5px; top: 964.5px; display: block;"></div>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/1270.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1270</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1270&amp;key=dda6f62d</trackback:ping></item><item><title>flash/js上传插件swfupload参数说明 使用指南</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/flash-air/1249.html</link><pubDate>Wed, 25 Jun 2014 11:37:11 +0800</pubDate><guid>http://camnpr.com/flash-air/1249.html</guid><description><![CDATA[<p><a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fcode%7Cgoogle%7Ccom%2Fp%2Fswfupload%2F" target="_blank">SWFUpload</a>是一个flash和js相结合而成的文件上传插件，其功能非常强大。以前在项目中用过几次，但它的配置参数太多了，用过后就忘记怎么用了，到以后要用时又得到官网上看它的文档，真是太烦了。所以索性就把它的用法记录下来，也方便英语拙计的同学查看，利人利己，一劳永逸。</p><p>SWFUpload的特点：</p><p>1、用flash进行上传，页面无刷新，且可自定义Flash按钮的样式;</p><p>2、可以在浏览器端就对要上传的文件进行限制;</p><p>3、允许一次上传多个文件，但会有一个上传队列，队列里文件的上传是逐个进行的，服务器端接收文件时跟普通的表单上传文件是一样的;</p><p>4、提供了丰富的事件接口供开发者使用;</p><p>SWFUpload的文件上传流程是这样的：</p><p>1、引入相应的js文件</p><p>2、实例化SWFUpload对象，传入一个配置参数对象进行各方面的配置。</p><p>3、点击SWFUpload提供的Flash按钮，弹出文件选取窗口选择要上传的文件；</p><p>4、文件选取完成后符合规定的文件会被添加到上传的队列里；</p><p>5、调用startUpload方法让队列里文件开始上传；</p><p>6、文件上传过程中会触发相应的事件，开发者利用这些事件来更新ui、处理错误、发出提示等等；</p><p>SWFUpload包括三部分的内容：SWFUpload.js、swfupload.swf、初始化配置参数及各种事件处理函数。所以首先在页面引入SWFUpload.js</p><pre>&lt;script src='SWFUpload.js'&gt;&lt;/script&gt;</pre><p>&nbsp;</p><p>然后实例化一个SWFUpload对象：</p><div>var&nbsp;swfu;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>window.onload = function&nbsp;() {</div><div>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;settings_object = {//定义参数配置对象</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_url : &quot;upload.php&quot;,</div><p>&lt;div&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flash_url : &quot;swfupload.swf&quot;,</p><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_post_name : &quot;Filedata&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post_params : {</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;post_param_name_1&quot;&nbsp;: &quot;post_param_value_1&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;post_param_name_2&quot;&nbsp;: &quot;post_param_value_2&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;post_param_name_n&quot;&nbsp;: &quot;post_param_value_n&quot;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use_query_string : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requeue_on_error : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http_success : [201, 202],</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assume_success_timeout : 0,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_types : &quot;*.jpg;*.gif&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_types_description: &quot;Web Image Files&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_size_limit : &quot;1024&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_upload_limit : 10,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_queue_limit : 2,</div><div>&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prevent_swf_caching : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preserve_relative_urls : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_placeholder_id : &quot;element_id&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_image_url : &quot;button_sprite.png&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_width : 61,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_height : 22,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_text : &quot;&lt;b&gt;Click&lt;/b&gt; &lt;span class=&quot;redText&quot;&gt;here&lt;/span&gt;&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_text_style : &quot;.redText { color: #FF0000; }&quot;,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_text_left_padding : 3,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_text_top_padding : 2,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_disabled : false,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_cursor : SWFUpload.CURSOR.HAND,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swfupload_loaded_handler : swfupload_loaded_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_dialog_start_handler : file_dialog_start_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_queued_handler : file_queued_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_queue_error_handler : file_queue_error_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_dialog_complete_handler : file_dialog_complete_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_start_handler : upload_start_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_progress_handler : upload_progress_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_error_handler : upload_error_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_success_handler : upload_success_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload_complete_handler : upload_complete_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug_handler : debug_function,</div><div>&nbsp;&nbsp;&nbsp;&nbsp;};</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;swfu = new&nbsp;SWFUpload(settings_object);//实例化一个SWFUpload，传入参数配置对象</div><div>};</div><div>/*定义各种事件监听函数*/</div><div>function&nbsp;swfupload_loaded_function(){}</div><div>function&nbsp;file_dialog_start_function(){}</div><div>...等等</div><p>我们看到要实现一个swfupload上传功能很简单，就是实例化一个swfupload对象。但繁琐的地方就在于实例化实要用到的参数配置对象，以及各种事件的发生时机以和提供的参数。所以重点来了。下面几个表格对开发中要用到的东西列举了出来，虽然已经蛮多了，但并不是swfupload的全部，我列出来的只是常用的。要查看完整的文档，请到<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fdemo%7Cswfupload%7Corg%2FDocumentation%2F" target="_blank">swfupload</a>官网上查询。</p><p><strong>一、配置参数对象中的常用属性及说明</strong></p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th width="160">属性</th>            <th width="100">类型</th>            <th width="80">默认值</th>            <th>描述</th>        </tr>        <tr>            <th>upload_url</th>            <td>String</td>            <td>&nbsp;</td>            <td>处理上传文件的服务器端页面的url地址，可以是绝对地址，也可以是相对地址，当为相对地址时相对的是当前代码所在的文档地址</td>        </tr>        <tr>            <th>preserve_relative_urls</th>            <td>Boolean</td>            <td>false</td>            <td>如果为false则SWFUpload会把swfupload.swf用到的相对地址转换为绝对地址，以达到更好的兼容性</td>        </tr>        <tr>            <th>file_post_name</th>            <td>String</td>            <td>Filedata</td>            <td>相当于用普通的文件域上传文件时的name属性，服务器端接收页面通过该名称来获取上传的文件</td>        </tr>        <tr>            <th>post_params</th>            <td>Object(直接量)</td>            <td>&nbsp;</td>            <td>一个对象直接量，里面的键/值对会随着每一个文件一起上传，文件上传要附加一些信息时很有用</td>        </tr>        <tr>            <th>use_query_string</th>            <td>Boolean</td>            <td>false</td>            <td>为false时,post_params属性定义的参数会以post方式上传；为true时，则会以get方式上传（即参数会以查询字符串的形式附加到url后面）</td>        </tr>        <tr>            <th>file_types</th>            <td>String</td>            <td>&nbsp;</td>            <td>该属性指定了允许上传的文件类型，当有多个类型时使用分号隔开，比如：*.jpg;*.png ,允许所有类型时请使用 *.*</td>        </tr>        <tr>            <th>file_types_description</th>            <td>String</td>            <td>&nbsp;</td>            <td>指定在文件选取窗口中显示的文件类型描述，起一个提示和说明的作用吧</td>        </tr>        <tr>            <th>file_size_limit</th>            <td>String</td>            <td>&nbsp;</td>            <td>指定要上传的文件的最大体积，可以带单位，合法的单位有:B、KB、MB、GB，如果省略了单位，则默认为KB。该属性为0时，表示不限制文件的大小。</td>        </tr>        <tr>            <th>file_upload_limit</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定最多能上传多少个文件，当上传成功的文件数量达到了这个最大值后，就不能再上传文件了，也不能往上传队列里添加文件了。把该属性设为0时表示不限制文件的上传数量。</td>        </tr>        <tr>            <th>file_queue_limit</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定文件上传队列里最多能同时存放多少个文件。当超过了这个数目后只有当队列里有文件上传成功、上传出错或被取消上传后，等同数量的其他文件才可以被添加进来。当file_upload_limit的数值或者剩余的能上传的文件数量小于file_queue_limit时，则取那个更小的值</td>        </tr>        <tr>            <th>flash_url</th>            <td>String</td>            <td>&nbsp;</td>            <td>swfupload.swf文件的绝对或相对地址，相对地址是指相对于当前的页面地址。实例化swfupload后，就不能再改变该属性的值了。</td>        </tr>        <tr>            <th>prevent_swf_caching</th>            <td>Boolean</td>            <td>&nbsp;</td>            <td>为true时会加一个随机数在swfupload.swf地址的后面，以阻止flash影片被缓存，这是为了防止某些版本的IE浏览器在读取缓存的falsh影片时出现的bug</td>        </tr>        <tr>            <th>button_placeholder_id</th>            <td>String</td>            <td>&nbsp;</td>            <td>指定一个dom元素的id,该dom元素在swfupload实例化后会被Flash按钮代替，这个dom元素相当于一个占位符</td>        </tr>        <tr>            <th>button_placeholder</th>            <td>DOMElement</td>            <td>&nbsp;</td>            <td>指定一个dom元素,该dom元素在swfupload实例化后会被Flash按钮代替，这个dom元素相当于一个占位符。当button_placeholder_id与button_placeholder都存在时，以button_placeholder_id为优先</td>        </tr>        <tr>            <th>button_image_url</th>            <td>String</td>            <td>&nbsp;</td>            <td>指定Flash按钮的背景图片，相对地址或绝对地址都可以。该地址会受到preserve_relative_urls属性的影响，遵从与upload_url一样的规则。<br />            该背景图片必须是一个sprite图片,从上到下包含了Flash按钮的正常、鼠标悬停、按下、禁用这四种状态。因此该图片的高度应该是Flash按钮高度的四倍</td>        </tr>        <tr>            <th>button_width</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定Flash按钮的宽度</td>        </tr>        <tr>            <th>button_height</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定Flash按钮的高度，应该为button_image_url所指定的按钮背景图片高度的1/4</td>        </tr>        <tr>            <th>button_text</th>            <td>String</td>            <td>&nbsp;</td>            <td>指定Flash按钮上的文字，也可以是html代码</td>        </tr>        <tr>            <th>button_text_style</th>            <td>String</td>            <td>&nbsp;</td>            <td>Flash按钮上的文字的样式，使用方法见示例</td>        </tr>        <tr>            <th>button_text_top_padding</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定Flash按钮顶部的内边距，可使用负值</td>        </tr>        <tr>            <th>button_text_left_padding</th>            <td>Number</td>            <td>&nbsp;</td>            <td>指定Flash按钮左边的内边距，可使用负值</td>        </tr>        <tr>            <th>button_disabled</th>            <td>Boolean</td>            <td>false</td>            <td>为true时Flash按钮将变为禁用状态，点击也不会触发任何行为</td>        </tr>        <tr>            <th>button_cursor</th>            <td>&nbsp;</td>            <td>&nbsp;</td>            <td>指定鼠标悬停在Flash按钮上时的光标样式，可用值为SWFUpload.CURSOR里定义的常量</td>        </tr>        <tr>            <th>button_window_mode</th>            <td>&nbsp;</td>            <td>&nbsp;</td>            <td>指定Flash按钮的WMODE属性，可用值为SWFUpload.WINDOW_MODE里定义的常量</td>        </tr>        <tr>            <th>file_dialog_start_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>fileDialogStart事件侦听函数</td>        </tr>        <tr>            <th>file_queued_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>fileQueued事件侦听函数</td>        </tr>        <tr>            <th>file_queue_error_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>fileQueueError事件侦听函数</td>        </tr>        <tr>            <th>file_dialog_complete_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>fileDialogComplete事件侦听函数</td>        </tr>        <tr>            <th>upload_start_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>uploadStart事件侦听函数</td>        </tr>        <tr>            <th>upload_progress_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>uploadProgress事件侦听函数</td>        </tr>        <tr>            <th>upload_error_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>uploadError事件侦听函数</td>        </tr>        <tr>            <th>upload_success_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>uploadSuccess事件侦听函数</td>        </tr>        <tr>            <th>upload_complete_handler</th>            <td>Function</td>            <td>&nbsp;</td>            <td>uploadComplete事件侦听函数</td>        </tr>    </tbody></table><p><strong>二、各种事件说明</strong></p><p>要实现与用户的交互，靠的就是在这些事件上做文章了</p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th colspan="3">fileDialogStart ( )</th>        </tr>        <tr>            <td colspan="3">在文件选取窗口将要弹出时触发</td>        </tr>        <tr>            <th colspan="3">fileQueued (&nbsp;file object&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当一个文件被添加到上传队列时会触发此事件，提供的唯一参数为包含该文件信息的file object对象</td>        </tr>        <tr>            <th colspan="3">fileQueueError (&nbsp;file object, error code, message&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当文件添加到上传队列失败时触发此事件，失败的原因可能是文件大小超过了你允许的数值、文件是空的或者文件队列已经满员了等。<br />            该事件提供了三个参数。第一个参数是当前出现问题的文件对象，第二个参数是具体的错误代码，可以参照SWFUpload.QUEUE_ERROR中定义的常量</td>        </tr>        <tr>            <th colspan="3">fileDialogComplete (&nbsp;number of files selected, number of files queued, total number of files in the queued&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当文件选取完毕且选取的文件经过处理后（指添加到上传队列），会立即触发该事件。可以在该事件中调用this.startUpload()方法来实现文件的自动上传<br />            参数number of files selected指本次在文件选取框里选取的文件数量<br />            参数number of files queued指本次被添加到上传队列的文件数量<br />            参数total number of files in the queued指当前上传队列里共有多少个文件（包括了本次添加进去的文件）</td>        </tr>        <tr>            <th colspan="3">uploadStart (&nbsp;file object&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当文件即将上传时会触发该事件,该事件给了你在文件上传前的最后一次机会来验证文件信息、增加要随之上传的附加信息或做其他工作。可以通过返回false来取消本次文件的上传<br />            参数file object为当前要上传的文件的信息对象</td>        </tr>        <tr>            <th colspan="3">uploadProgress (&nbsp;file object, bytes complete, total bytes&nbsp;)</th>        </tr>        <tr>            <td colspan="3">该事件会在文件的上传过程中反复触发，可以利用该事件来实现上传进度条<br />            参数file object为文件信息对象<br />            参数bytes complete为当前已上传的字节数<br />            参数total bytes为文件总的字节数</td>        </tr>        <tr>            <th colspan="3">uploadError (&nbsp;file object, error code, message&nbsp;)</th>        </tr>        <tr>            <td colspan="3">文件上传被中断或是文件没有成功上传时会触发该事件。停止、取消文件上传或是在uploadStart事件中返回false都会引发这个事件，但是如果某个文件被取消了但仍然还在队列中则不会触发该事件<br />            参数file object为文件信息对象<br />            参数error code为错误代码，具体的可参照SWFUpload.UPLOAD_ERROR中定义的常量</td>        </tr>        <tr>            <th colspan="3">uploadSuccess (&nbsp;file object, server data, received response&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当一个文件上传成功后会触发该事件<br />            参数file object为文件信息对象<br />            参数server data为服务器端输出的数据</td>        </tr>        <tr>            <th colspan="3">uploadComplete(&nbsp;file object&nbsp;)</th>        </tr>        <tr>            <td colspan="3">当一次文件上传的流程完成时（不管是成功的还是不成功的）会触发该事件，该事件表明本次上传已经完成，上传队列里的下一个文件可以开始上传了。该事件发生后队列中下一个文件的上传将会开始</td>        </tr>    </tbody></table><p><strong>三、swfupload实例的方法</strong></p><p>方法中大多数是动态改变参数配置对象的方法</p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th colspan="3">destroy ( )</th>        </tr>        <tr>            <td colspan="3">当不需要再使用SWFUpload了的时候,可以使用该方法来销毁它的实例和dom元素</td>        </tr>        <tr>            <th colspan="3">startUpload(&nbsp;file_id&nbsp;)</th>        </tr>        <tr>            <td colspan="3">开始上传队列中指定的文件<br />            参数file_id代表要上传的文件的id，如果未填写这个参数，则会上传队列中第一个文件</td>        </tr>        <tr>            <th colspan="3">cancelUpload (&nbsp;file_id, trigger_error_event&nbsp;)</th>        </tr>        <tr>            <td colspan="3">取消文件的上传<br />            参数file_id为要取消的文件的id,如果该参数为undefined或者未填写，则会取消队列里的第一个文件<br />            参数trigger_error_event接受一个布尔值，当为false时取消文件不会触发uploadError事件，默认为true</td>        </tr>        <tr>            <th colspan="3">stopUpload ( )</th>        </tr>        <tr>            <td colspan="3">终止当前正在上传的文件，会触发uploadError事件。如果当前没有文件在上传，则该方法什么都不会做</td>        </tr>        <tr>            <th colspan="3">getStats ( )</th>        </tr>        <tr>            <td colspan="3">获取队列的stats object</td>        </tr>        <tr>            <th colspan="3">setStats (&nbsp;stats_object&nbsp;)</th>        </tr>        <tr>            <td colspan="3">修改队列的stats_object，传入修改过的stats_object作为参数</td>        </tr>        <tr>            <th colspan="3">getFile (&nbsp;file_id|index&nbsp;)</th>        </tr>        <tr>            <td colspan="3">根据文件id或文件索引来获取一个File Object,当使用文件id时只能获得队列里的文件，当使用文件索引时所有文件（包括队列内和队列外）都可获得</td>        </tr>        <tr>            <th colspan="3">addPostParam (&nbsp;name, value)</th>        </tr>        <tr>            <td colspan="3">往配置对象中post_params指定的附加信息对象中增加键/值对</td>        </tr>        <tr>            <th colspan="3">removePostParam (&nbsp;name)</th>        </tr>        <tr>            <td colspan="3">移除置配置对象中的post_params包含的某一个键/值对，参数name为要移除的值的键名</td>        </tr>        <tr>            <th colspan="3">addFileParam (&nbsp;file_id, name, value)</th>        </tr>        <tr>            <td colspan="3">为某个特定文件增加随之一起上传的附加信息。注意，只有在该指定的文件上传时，附加的信息才会一起上传。而配置对象中post_param设置的附加信息在任一文件上传时都会与之一起发送。<br />            参数file_id为要指定的文件id,参数name和value分别为附加信息的名称和值</td>        </tr>        <tr>            <th colspan="3">removeFileParam (&nbsp;file_id, name)</th>        </tr>        <tr>            <td colspan="3">移除通过addFileParam方法增加的附加信息，两个参数相信就不用我多讲了吧</td>        </tr>        <tr>            <th colspan="3">setUploadURL (&nbsp;url)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中upload_url的值</td>        </tr>        <tr>            <th colspan="3">setPostParams (&nbsp;param_object)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中post_params属性的值，新的值会覆盖旧的值。<br />            参数param_object必须为一个对象直接量，且里面的属性和值都只能为字符串</td>        </tr>        <tr>            <th colspan="3">setFileTypes (&nbsp;types, description)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中file_types 和 file_types_description属性的值。两个参数都不能省略</td>        </tr>        <tr>            <th colspan="3">setFileSizeLimit (&nbsp;file_size_limit)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中file_size_limit属性的值</td>        </tr>        <tr>            <th colspan="3">setFileUploadLimit (&nbsp;file_upload_limit)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中file_upload_limit属性的值</td>        </tr>        <tr>            <th colspan="3">setFileQueueLimit (&nbsp;file_queue_limit)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中file_queue_limit属性的值</td>        </tr>        <tr>            <th colspan="3">setFilePostName (&nbsp;file_post_name)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中file_post_name属性的值</td>        </tr>        <tr>            <th colspan="3">setUseQueryString (&nbsp;use_query_string)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中use_query_string属性的值</td>        </tr>        <tr>            <th colspan="3">setButtonImageURL (&nbsp;url)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中button_image_url属性的值</td>        </tr>        <tr>            <th colspan="3">setButtonDimensions (&nbsp;width, height)</th>        </tr>        <tr>            <td colspan="3">动态设置Flash按钮的宽度和高度，两个参数分别为宽度和高度的值，类型为数字，且不能带单位</td>        </tr>        <tr>            <th colspan="3">setButtonText (&nbsp;text)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中button_text属性的值</td>        </tr>        <tr>            <th colspan="3">setButtonTextStyle (&nbsp;css_style_text)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中button_text_style属性的值</td>        </tr>        <tr>            <th colspan="3">setButtonTextPadding (&nbsp;left, top&nbsp;)</th>        </tr>        <tr>            <td colspan="3">动态设置Flash按钮的左边内边距和顶部内边距</td>        </tr>        <tr>            <th colspan="3">setButtonDisabled (&nbsp;isDisabled&nbsp;)</th>        </tr>        <tr>            <td colspan="3">动态对Flash按钮进行禁用和不禁用的操作，参数为一个布尔值</td>        </tr>        <tr>            <th colspan="3">setButtonCursor (&nbsp;buttonCursor&nbsp;)</th>        </tr>        <tr>            <td colspan="3">动态设置配置对象中button_cursor的值</td>        </tr>    </tbody></table><p><strong>四、文件信息对象 File Object</strong></p><p>在事件监听函数中，经常要用到文件信息对象来获取文件的信息以供下一步的操作</p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th width="160">属性</th>            <th width="100">类型</th>            <th>描述</th>        </tr>        <tr>            <th>id</th>            <td>String</td>            <td>SWFUpload定义的文件id,用来控制文件的上传</td>        </tr>        <tr>            <th>index</th>            <td>Number</td>            <td>文件的索引，用在getFile(i)方法中</td>        </tr>        <tr>            <th>name</th>            <td>String</td>            <td>文件的原始名称，不包括路径</td>        </tr>        <tr>            <th>type</th>            <td>String</td>            <td>文件类型</td>        </tr>        <tr>            <th>creationdate</th>            <td>Date</td>            <td>文件的创建日期</td>        </tr>        <tr>            <th>modificationdate</th>            <td>Date</td>            <td>文件的最后修改日期</td>        </tr>        <tr>            <th>filestatus</th>            <td>Number</td>            <td>当前文件的状态，详细的请参照SWFUpload.FILE_STATUS中定义的常量</td>        </tr>    </tbody></table><p><strong>五、队列状态对象 Stats Object</strong></p><p>用来获取当前队列的状况</p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th width="160">属性</th>            <th width="100">类型</th>            <th>描述</th>        </tr>        <tr>            <th>in_progress</th>            <td>Number</td>            <td>得到的值为1或0，表明当前队列是否有文件正在上传中</td>        </tr>        <tr>            <th>files_queued</th>            <td>Number</td>            <td>目前上传队列中的文件数量</td>        </tr>        <tr>            <th>successful_uploads</th>            <td>Number</td>            <td>已成功上传(指触发了uploadSuccess事件)的文件数量</td>        </tr>        <tr>            <th>upload_errors</th>            <td>Number</td>            <td>上传失败的文件数量(包括被取消上传的文件)</td>        </tr>        <tr>            <th>upload_cancelled</th>            <td>Number</td>            <td>被取消上传的文件数量</td>        </tr>        <tr>            <th>queue_errors</th>            <td>Number</td>            <td>触发了fileQueueError事件的文件数量</td>        </tr>    </tbody></table><p><strong>六、一些常量</strong></p><p>定义的一些常量，便于理解</p><table border="1" width="98%" cellspacing="0" cellpadding="0">    <tbody>        <tr>            <th width="370">常量名</th>            <th>描述</th>        </tr>        <tr>            <th>SWFUpload.instances</th>            <td>该常量是一个对象，代表一个页面上所有的SWFUpload实例的引用的集合，用SWFUpload实例的movieName属性进行索引</td>        </tr>        <tr>            <th>SWFUpload.movieCount</th>            <td>页面上存在的SWFUpload实例的数量</td>        </tr>        <tr>            <th>&nbsp;</th>            <td>&nbsp;</td>        </tr>        <tr>            <th>SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED</th>            <td>用户选取的文件超过了允许的数量</td>        </tr>        <tr>            <th>SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT</th>            <td>文件的体积超过了允许的大小</td>        </tr>        <tr>            <th>SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE</th>            <td>文件是空的</td>        </tr>        <tr>            <th>SWFUpload.QUEUE_ERROR.INVALID_FILETYPE</th>            <td>不允许的文件类型</td>        </tr>        <tr>            <th>&nbsp;</th>            <td>&nbsp;</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.HTTP_ERROR</th>            <td>服务器返回的状态码不是200</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL</th>            <td>没有设置 upload_url</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.IO_ERROR</th>            <td>读取或传输文件时发生错误</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.SECURITY_ERROR</th>            <td>上传受到了安全方面的限制</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED</th>            <td>上传的文件数量超过了允许的最大值</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED</th>            <td>上传出现错误</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND</th>            <td>给startUpload()方法传入的文件id不存在</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED</th>            <td>uploadStart()方法中返回了false</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.FILE_CANCELLED</th>            <td>上传被取消了</td>        </tr>        <tr>            <th>SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED</th>            <td>上传被终止了</td>        </tr>        <tr>            <th>&nbsp;</th>            <td>&nbsp;</td>        </tr>        <tr>            <th>SWFUpload.FILE_STATUS.QUEUED</th>            <td>文件正在队列中等待上传</td>        </tr>        <tr>            <th>SWFUpload.FILE_STATUS.IN_PROGRESS</th>            <td>文件正在上传</td>        </tr>        <tr>            <th>SWFUpload.FILE_STATUS.ERROR</th>            <td>文件在添加到队列或是上传的时候出现了错误</td>        </tr>        <tr>            <th>SWFUpload.FILE_STATUS.COMPLETE</th>            <td>文件已上传成功</td>        </tr>        <tr>            <th>SWFUpload.FILE_STATUS.</th>            <td>文件被取消上传</td>        </tr>        <tr>            <th>&nbsp;</th>            <td>&nbsp;</td>        </tr>        <tr>            <th>SWFUpload.CURSOR.ARROW</th>            <td>鼠标以箭头显示</td>        </tr>        <tr>            <th>SWFUpload.CURSOR.HAND</th>            <td>鼠标以手形显示</td>        </tr>        <tr>            <th>&nbsp;</th>            <td>&nbsp;</td>        </tr>        <tr>            <th>SWFUpload.WINDOW_MODE.WINDOW</th>            <td>Flash按钮会显示在页面的所有dom元素上面</td>        </tr>        <tr>            <th>SWFUpload.WINDOW_MODE.OPAQUE</th>            <td>允许其他dom元素覆盖住Flash按钮</td>        </tr>        <tr>            <th>SWFUpload.WINDOW_MODE.TRANSPARENT</th>            <td>允许Flash按钮透明显示</td>        </tr>    </tbody></table><p>&nbsp;</p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/1249.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1249</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1249&amp;key=66819c77</trackback:ping></item><item><title>swfupload当file_upload_limit初始化需为0时动态修改个数限制的解决方案</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/flash-air/1248.html</link><pubDate>Wed, 25 Jun 2014 10:51:04 +0800</pubDate><guid>http://camnpr.com/flash-air/1248.html</guid><description><![CDATA[<p>swfupload当file_upload_limit初始化需要为0时解决方案<br></p><p>比如有这样的需求：文件上传完之后删除，那么上传文件个数限制也需要做相应的改变，可以通过修改file_upload_limit实现，在删除时file_upload_limit+1即可。</p><p>那么如果是这样的需求呢：在文件列表编辑的时候，默认的文件数已经达到上传文件个数限制时，如何解决？有人说了，初始化file_upload_limit值为0即可，然后在删除现有的文件时file_upload_limit+1就行了，我当时也是这么想的，但是swfupload默认file_upload_limit为0时表示个数无限制，纠结了吧，呵呵，不要着急，它还提供的有successful_uploads，官方介绍的是这样处理:</p><p>&nbsp;&nbsp;&nbsp;&nbsp; var stats = this.getStats();<br>&nbsp;&nbsp;&nbsp;&nbsp; stats.successful_uploads--;<br>&nbsp;&nbsp;&nbsp;&nbsp; this.setStats(stats);</p><p>我想你一看就能明白，跟刚才file_upload_limit的实现有异曲同工之妙，只不过它修改的是上传成功的个数。</p><p>那在实际应用中该如何做呢，</p><p>Code：</p><p>&nbsp;&nbsp;&nbsp; var initImageCount = 3;&nbsp; // 这是你初始化时现有的文件个数，假如你允许的文件个数也为3<br>&nbsp;&nbsp;&nbsp; function fileDialogStart() {&nbsp; // file_dialog_start_handler执行方法<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; var stats = swfu.getStats();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; stats.successful_uploads += initImageCount;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; stats.successful_uploads -= removeCount;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; swfu.setStats(stats);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; initImageCount = 0;&nbsp; // 清0，你懂得<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; removeCount = 0; // 清0<br>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp; var swfu = new SWFUpload({<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; file_dialog_start_handler: fileDialogStart,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p><p>&nbsp;&nbsp;&nbsp; });</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp; var removeCount = 0;&nbsp; // 这就是你删除已上传文件的计数</p><p>&nbsp;&nbsp;&nbsp; function removeImage() {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeCount++;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p><p>&nbsp;&nbsp;&nbsp; }</p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/1248.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1248</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1248&amp;key=49b9b62b</trackback:ping></item><item><title>随机视频聊天网站chatroulette可以和外国人随机视频聊天的网站</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/chatroulette.html</link><pubDate>Wed, 23 May 2012 19:18:41 +0800</pubDate><guid>http://camnpr.com/flash-air/chatroulette.html</guid><description><![CDATA[<h1 class="ts">可以和外国人随机视频聊天的网站</h1><p><span>前阵子有上新闻，一个17岁的外国男生做的网站，最近招到了风投的关注</span><br /><br /><span>打开这个网站&nbsp;&nbsp;就点击 play 按钮 就可以和 外国人随机聊天</span><br /><br /><span>说不定 遇到一个外国美女也不错</span><br /><br /><span>某人刚才进去 点击了 play 按钮，一下视频那里出来一个 外国人 是一个胖子，就马上把网站关闭了 哈哈！</span><br /><br /><span>你们可以去试试！&nbsp; &nbsp;看看遇到金发美女的几率</span></p><p><span><span>Chatroulette被人们叫做&ldquo;聊天轮盘&rdquo;是由一个17岁</span>俄国<span>高中生创立的随机视频聊天网站。该网站提供的的服务很简单，它将用户随机配对，并生成一对的</span>网络视频<span>连接。它使得用户可以与不认识的人进行有趣的聊天。如今这个网站平均每天在线用户已经达到150万。</span></span></p><p><span><span>尝鲜网址：<a href="http://chatroulette.com/" target="_blank">http://chatroulette.com/</a></span></span></p><p><span><span>&nbsp;</span></span></p><p><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2012/5/201205231925001335.jpg" alt="" title="" /><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2012/5/201205231925125340.jpg" alt="" title="" /><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2012/5/201205231925248120.jpg" alt="" title="" /><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2012/5/201205231925401083.jpg" alt="" title="" /></p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/chatroulette.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=574</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=574&amp;key=5d79a7b6</trackback:ping></item><item><title>Flex与C#的一般处理程序(ashx)通信 一般处理程序应用线程</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/555.html</link><pubDate>Mon, 23 Apr 2012 10:43:08 +0800</pubDate><guid>http://camnpr.com/flash-air/555.html</guid><description><![CDATA[<p>Flex代码:</p><div id="" class="dp-highlighter"><div class="bar"><div class="tools">Xml代码&nbsp;&nbsp;</div></div><ol class="dp-xml" start="1"><li><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"utf-8"</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">mx:Application</span><span>&nbsp;</span><span class="attribute">xmlns:mx</span><span>=</span><span class="attribute-value">"http://www.adobe.com/2006/mxml"</span><span>&nbsp;</span><span class="attribute">layout</span><span>=</span><span class="attribute-value">"absolute"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">backgroundColor</span><span>=</span><span class="attribute-value">"0x414141"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&lt;!--上面preload属性与下面外部CSS可以删除它&nbsp;&nbsp;</span></li><li><span>&nbsp;<span class="attribute">preloader</span><span>=</span><span class="attribute-value">"com.preload.PreLoad"</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">mx:Style</span><span>&nbsp;</span><span class="attribute">source</span><span>=</span><span class="attribute-value">"yfskin/yflexskin.css"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>--<span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;</span><span class="tag-name">mx:Script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;<span class="cdata">&lt;![CDATA[&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;mx.collections.ArrayCollection;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;flash.events.Event;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;mx.rpc.events.ResultEvent;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;mx.controls.Alert;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;mx.events.CloseEvent;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;com.adobe.serialization.json.JSON;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;personJSON(event:ResultEvent):void&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//get&nbsp;the&nbsp;raw&nbsp;JSON&nbsp;data&nbsp;and&nbsp;cast&nbsp;to&nbsp;String&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;rawData:String&nbsp;=&nbsp;String(event.result);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//showMsg(rawData);</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;person&nbsp;=&nbsp;JSON.decode(rawData);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtName.text&nbsp;=&nbsp;person.data[0].name;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtGx.text&nbsp;=&nbsp;person.data[0].sex;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtAddress.text&nbsp;=&nbsp;person.data[0].age;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtNiceName.text&nbsp;=&nbsp;person.data[0].email;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtEmployees.text&nbsp;=&nbsp;"不是";&nbsp;</span>&nbsp;</span></li><li><span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;persons:Array&nbsp;=&nbsp;person.data&nbsp;as&nbsp;Array;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;personsCollection:ArrayCollection&nbsp;=&nbsp;new&nbsp;ArrayCollection(persons);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dg.dataProvider&nbsp;=&nbsp;personsCollection;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;showMsg(obj:String):void</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;{</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;alert:Alert&nbsp;=&nbsp;Alert.show(</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj,"Alert&nbsp;Window&nbsp;Title",</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alert.OK|Alert.CANCEL|Alert.NO|Alert.YES,</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this);</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;managerJSON(event:ResultEvent):void&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取原始JSON数据并输出到InputText控件上&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;rawData:String&nbsp;=&nbsp;String(event.result);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;alert:Alert&nbsp;=&nbsp;Alert.show(</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rawData,"Alert&nbsp;Window&nbsp;Title",</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alert.OK|Alert.CANCEL|Alert.NO|Alert.YES,</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this);</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;manager&nbsp;=&nbsp;JSON.decode(rawData);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtName.text&nbsp;=&nbsp;manager.txt_name;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtGx.text&nbsp;=&nbsp;manager.txt_gx;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtAddress.text&nbsp;=&nbsp;manager.address;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtNiceName.text&nbsp;=&nbsp;manager.nice_name;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtEmployees.text&nbsp;=&nbsp;"是";&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//更新DataGrid&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;employees:Array&nbsp;=&nbsp;manager.employees&nbsp;as&nbsp;Array;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;employeesCollection:ArrayCollection&nbsp;=&nbsp;new&nbsp;ArrayCollection(employees);&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dg.dataProvider&nbsp;=&nbsp;employeesCollection;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;onSelected():void&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtName.text&nbsp;=&nbsp;dg.selectedItem.txt_name;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtGx.text&nbsp;=&nbsp;dg.selectedItem.txt_gx;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtAddress.text&nbsp;=&nbsp;dg.selectedItem.address;&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtNiceName.text&nbsp;=&nbsp;"";&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtEmployees.text&nbsp;=&nbsp;"";&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span>&nbsp;</span></li><li><span><span class="cdata">&nbsp;&nbsp;&nbsp;]]&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:Script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:HTTPService</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"personRequest"</span><span>&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">"http://localhost:5401/WebFlex/HandlerFlex.ashx"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">showBusyCursor</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="attribute">useProxy</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">method</span><span>=</span><span class="attribute-value">"GET"</span><span>&nbsp;</span><span class="attribute">resultFormat</span><span>=</span><span class="attribute-value">"text"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">result</span><span>=</span><span class="attribute-value">"personJSON(event)"</span><span>&nbsp;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:request</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">""</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">data</span><span class="tag">&gt;</span><span>"true"</span><span class="tag">&lt;/</span><span class="tag-name">data</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:request</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:HTTPService</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:HTTPService</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"managerRequest"</span><span>&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">"http://localhost:5401/WebFlex/HandlerFlex.ashx"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">showBusyCursor</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="attribute">useProxy</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">method</span><span>=</span><span class="attribute-value">"GET"</span><span>&nbsp;</span><span class="attribute">resultFormat</span><span>=</span><span class="attribute-value">"text"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">result</span><span>=</span><span class="attribute-value">"managerJSON(event)"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:request</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">""</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">getManager</span><span class="tag">&gt;</span><span>"true"</span><span class="tag">&lt;/</span><span class="tag-name">getManager</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:request</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:HTTPService</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Panel</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"0"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"0"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"730"</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">"240"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">layout</span><span>=</span><span class="attribute-value">"absolute"</span><span>&nbsp;</span><span class="attribute">title</span><span>=</span><span class="attribute-value">"JSON&nbsp;数据源实例"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:DataGrid</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"dg"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"210"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"505"</span><span>&nbsp;</span><span class="attribute">rowCount</span><span>=</span><span class="attribute-value">"5"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">rowHeight</span><span>=</span><span class="attribute-value">"25"</span><span>&nbsp;</span><span class="attribute">enabled</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">change</span><span>=</span><span class="attribute-value">"onSelected()"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:columns</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">"姓名"</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">"name"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">"性别"</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">"sex"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">"年龄"</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">"age"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">"邮箱"</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">"email"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:columns</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:DataGrid</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"12"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"姓名:"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"txtName"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"11"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"150"</span><span>&nbsp;</span><span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"41"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"关系:"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"txtGx"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"40"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"150"</span><span>&nbsp;</span><span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"74"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"住址:"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"txtAddress"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"72"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"150"</span><span>&nbsp;</span><span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"105"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"昵称:"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"txtNiceName"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"103"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"150"</span><span>&nbsp;</span><span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"10"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"136"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"屋主:"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"txtEmployees"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"134"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">"150"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">editable</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">"不是"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Button</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"getPerson"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"270"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"165"</span><span>&nbsp;</span><span class="attribute">label</span><span>=</span><span class="attribute-value">"侄女"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">click</span><span>=</span><span class="attribute-value">"personRequest.send();"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mx:Button</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"getManager"</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">"380"</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">"165"</span><span>&nbsp;</span><span class="attribute">label</span><span>=</span><span class="attribute-value">"我的家族"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">click</span><span>=</span><span class="attribute-value">"managerRequest.send();"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">mx:Panel</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">mx:Application</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><p>&nbsp;</p><p>C#代码:</p><div class="dp-highlighter"><ol class="dp-c" start="1"><li><span><span>&lt;%@&nbsp;WebHandler&nbsp;Language=</span><span class="string">"C#"</span><span>&nbsp;Class=</span><span class="string">"HandlerFlex"</span><span>&nbsp;%&gt;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">using</span><span>&nbsp;System.Web;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">using</span><span>&nbsp;System.Net;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">using</span><span>&nbsp;System.Text;&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">using</span><span>&nbsp;System.Threading;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;HandlerFlex&nbsp;:&nbsp;IHttpHandler&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;HttpContext&nbsp;con;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;ProcessRequest&nbsp;(HttpContext&nbsp;context)&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Response.ContentType&nbsp;=&nbsp;<span class="string">"text/plain"</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//context.Response.Write("Hello&nbsp;World");</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con&nbsp;=&nbsp;context;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.Start();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: #ff99cc;"><span class="keyword">public</span>&nbsp;<span class="keyword">void</span>&nbsp;Start()&nbsp;&nbsp;</span></span></li><li><span style="background-color: #ff99cc;">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span style="background-color: #ff99cc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;t&nbsp;=&nbsp;<span class="keyword">new</span>&nbsp;Thread(<span class="keyword">new</span>&nbsp;ThreadStart(ListenRequest));&nbsp;&nbsp;</span></li><li><span style="background-color: #ff99cc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.Start();&nbsp;&nbsp;</span></li><li><span style="background-color: #ff99cc;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;ListenRequest()&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpResponse&nbsp;response&nbsp;=&nbsp;con.Response;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">string</span><span>&nbsp;msg&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.getJsonData();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.Response.Write(msg);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;getJsonData()&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;jsonData&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;StringBuilder();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsonData.Append(<span class="string">"{\"data\":[{\"name\":\"谢刚\",\"sex\":\"男\",\"age\":\"21\",\"email\":\"xiegangthrille@126.com\"}]}"</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//jsonData.Append("{\"nice_name\":\"\u963f\u5065\",\"employees\":[{\"txt_name\":\"\u963f\u96ea\",\"txt_gx\":\"\u8001\u5a46\",\"email\":\"xuelove520@21cn.com\",\"address\":\"\u5e7f\u4e1c\u8087\u5e86\u5e7f\u5b81\u8c2d\u5e03\u6c34\u58f0\u5cad\"},{\"txt_name\":\"\u5b87B\",\"txt_gx\":\"\u513f\u5b50\",\"email\":\"0758yu@163.com\",\"address\":\"\u5730\u7403\u4e9a\u6d32\u4e2d\u56fd\u5e7f\u4e1c\u8087\u5e86\u5e7f\u5b81\u5357\u8857\"}],\"txt_name\":\"\u6b27\u5b97\u5065\",\"txt_gx\":\"\u67f1\u4eba\",\"email\":\"0758jian@163.com\",\"address\":\"\u592a\u9633\u7cfb\u7ecf\u706b\u661f\u5230\u5730\u7403\"}");</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;jsonData.ToString();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;RespClient(HttpListenerResponse&nbsp;response,&nbsp;</span><span class="keyword">string</span><span>&nbsp;msg)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">byte</span><span>[]&nbsp;buffer&nbsp;=&nbsp;Encoding.UTF8.GetBytes(msg);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.ContentType&nbsp;=&nbsp;@<span class="string">"text/xml"</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.ContentLength64&nbsp;=&nbsp;buffer.Length;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.Stream&nbsp;output&nbsp;=&nbsp;response.OutputStream;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.Write(buffer,&nbsp;0,&nbsp;buffer.Length);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.Close();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">bool</span><span>&nbsp;IsReusable&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li><span>}&nbsp;&nbsp;</span></li></ol></div><p>&nbsp;</p><p>&nbsp;flex工程需要用到的库:<a href="https://github.com/mikechambers/as3corelib">https://github.com/mikechambers/as3corelib</a></p><p>来源：<a href="http://xiegangthrille.iteye.com/blog/431339">http://xiegangthrille.iteye.com/blog/431339</a></p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/555.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=555</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=555&amp;key=65a02e0d</trackback:ping></item><item><title>Flash真的适合做网站应用吗？</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/492.html</link><pubDate>Thu, 10 Nov 2011 15:48:06 +0800</pubDate><guid>http://camnpr.com/flash-air/492.html</guid><description><![CDATA[<p>两年前，我们开发了一套基于Flash的文件（主要是图片）上传RIA应用，提供给阿里巴巴的用户使用。如果你使用过Wordpress或flickr上传图片，你应该已经用过类似的产品。这个程序基于<a title="YUI Uploader" href="http://developer.yahoo.com/yui/uploader/">YUI Uploader</a>开发，增加了一个实用的功能&mdash;&mdash;在客户端先将图片缩小，再上传到服务器。用户用数码相机拍摄的照片往往有600万以上的像素，但产品图片放到阿里巴巴网站上显示，并不需要这么大的像素，通常等比例缩小到1024&times;1024之内就可以了。借助于Flash对图片先缩小再上传的技术，我们在没有增加服务器投入的情况下，将原先上传图片的尺寸限制由250KB/张提升到了5MB/张。同时，Flash上传还比传统HTML表单方式上传有更好的体验，例如可以多选一批文件同时上传、可以实时展示上传进度、选择文件时可以过滤非图片文件。</p><p><img class="alignnone size-full wp-image-512" title="Screenshot" src="http://q.pnq.cc/wp-content/uploads/2011/03/Screenshot.png" alt="" width="782" height="352" /></p><p>这个组件获得了很大的成功。上线后不久，阿里巴巴网站上用户的图片上传数量由日均1万张左右上升至日均15万张左右。但在这个上传应用投入应用的两年中，我们遇到了各种问题。</p><h2>1. BUG</h2><p><img class="alignnone size-medium wp-image-508" title="man062" src="http://q.pnq.cc/wp-content/uploads/2011/03/man062-500x494.jpg" alt="" width="500" height="494" /></p><p>在<a title="Flash在某些多标签浏览器中的&ldquo;伪沙箱&rdquo;问题" href="http://q.pnq.cc/archives/443">基于IE多标签浏览器中的伪沙箱问题</a>就不说了，最严重的是cookie的问题。使用FileReference.upload的方式上传文件，http请求中附带的cookie信息不一定是当前浏览器进程的cookie，在Firefox、chrome等非IE浏览器中非常严重，可能传输的是IE中的cookie。即便是IE，也可能传输的cookie内容和当前页面的cookie记录不符合。这直接导致服务器端在收到文件之后的安全验证中失败。而对于阿里巴巴这样的大型网站，有比较成熟的java web框架，要去掉对cookie的依赖非常麻烦。于是结果就是，首先我们只有在用户使用IE系浏览器的时候才使用Flash上传，其次我们隔三岔五的还会收到使用IE的某些客户的投诉，在花费了大量的时间排查之后，我发现是由于cookie的问题导致上传失败。<a href="http://cookbooks.adobe.com/post_Why_is_session_info__cookies__not_sent_when_upload-12029.html">这个bug</a>已经存在很多年，但是随着Flash从9升级到10，许多版本过去了，问题依然没有被解决。对于闭源的Flash，我们也帮不上忙。</p><h2>2.性能</h2><p><img class="alignnone size-medium wp-image-498" title="Mignight_Run_by_Orikon" src="http://q.pnq.cc/wp-content/uploads/2011/03/Mignight_Run_by_Orikon-500x340.jpg" alt="" width="500" height="340" /></p><p>相对于现今数码相机的像素量，5MB的大小限制非常保守。但大于5M的时候，在一些低配置的电脑上，读取文件内容的时候就会发生浏览器假死现象。假死很容易导致浏览器崩溃，所以我们采取了保守的限制&mdash;&mdash;5MB。</p><p>另外一个性能消耗是将BitmapData编码成JPEG文件的时候。Adobe提供了JPEGEncoder，但由于是Array实现的，所以性能是个问题。编码一个2880&times;2880的图片在一台中等配置的电脑上大约需要15秒时间。</p><p>我用Vector改写了这个类，时间缩短为3.5秒左右。使用Alchemy，时间进一步缩短到1.5秒左右。但还是不够安全，所以最后采用了异步Vector的方式，延长编码的时间，以保证程序的稳定性。（评测在<a title="异步+Vector版本的JPEG编码器" href="http://q.pnq.cc/archives/307">这里</a>）</p><h2>3.图片质量</h2><p><img class="alignnone size-medium wp-image-505" title="iblrst00076625" src="http://q.pnq.cc/wp-content/uploads/2011/03/iblrst00076625-500x332.jpg" alt="" width="500" height="332" /></p><p>Flash内置的最好的图片缩小算法（用BitmapData.draw，并将smoothing参数设为true），在缩小图片的时候容易产生锯齿。因此我改写了<a href="http://jacwright.com/">Jacwright</a>提供的<a href="http://code.google.com/p/jacwright/source/browse/trunk/flash/jac/src/jac/image/ImageUtils.as">缩小算法</a>，图片质量的问题解决，但代价是性能又降低了一些。</p><h2>4.安全限制</h2><p><img class="alignnone size-medium wp-image-511" title="rad600-02833372s" src="http://q.pnq.cc/wp-content/uploads/2011/03/rad600-02833372s-500x333.jpg" alt="" width="500" height="333" /></p><p>Flash10.0之后，增加了一个安全限制&mdash;&mdash;当URLLoader以标准文件上传的方式发送POST请求的时候，需要由用户的UI操作（鼠标点击或按键事件）触发。因为我们对用户的图片做了处理，已经无法再通过FileReference上传，只能通过URLLoader。这个安全性限制规定每次发起一个上传文件的URLLoader请求，都必须让用户点击一下鼠标才可以。如果用户选择了20张图片，就要点击20次鼠标。这显然是无法接受的。因此我们放弃了用标准文件上传，采用普通post形式。代价是失去了对上传进度的跟踪，不知道文件上传的百分比；同时服务器端也需要改造。</p><h2>改变</h2><p>最近，我们做了一个决定：开发一个类似功能的ActiveX控件，替代Flash作为图片上传的主要解决方案。ActiveX的优势是性能，不足之处在于只能在Windows+IE浏览器中使用，但实际上我们的Flash上传目前也只能在IE中使用。Flash真的适合像阿里巴巴这样的网站使用吗？闭源和性能是Flash最大的问题。但在HTML5被广泛支持前，Flash和传统Ajax还是我们最主要的富客户端应用开发技术，相对于ActiveX、Silverlight、JavaFX、Gear等技术来说，Flash还是有安装率优势的。我们看到Adobe最近在新功能开发方面非常给力，值得称赞，但基础的功能的持续完善对开发者也同样重要。目前Flash依然是我们很重要的RIA技术，但是HTML5完全到来的那一天，现在很难说。</p>来源：http://q.pnq.cc/archives/496]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/492.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=492</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=492&amp;key=13131d43</trackback:ping></item><item><title>flv文件下载方法</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/249.html</link><pubDate>Wed, 23 Mar 2011 16:45:33 +0800</pubDate><guid>http://camnpr.com/flash-air/249.html</guid><description><![CDATA[<p><span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 14px; color: rgb(102,102,102); line-height: 20px; font-family: Arial; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px"><p style="line-height: normal">近日在宿舍里看《奋斗》，得出了一点对付铁通这种超慢超垃圾网速的视频下载方法：</p><p style="line-height: normal">平常下载视频，不是用迅雷就是用BT，资源多的时候下载速度还可以，资源少的时候会稍微有点<br style="line-height: normal" />郁闷。像我们宿舍用的是铁通的adsl，1M的带宽下载速度最多也就100k/s，遇到迅雷或者BT上资源<br style="line-height: normal" />少的时候那是相当滴郁闷啊。。。最近在56视频网上看奋斗，觉得速度还可以，于是便想到，把<br style="line-height: normal" />遨游浏览器最小化让视频在那缓冲着，自己先看着代码或者去干其他的都行，回头只要去IE临时<br style="line-height: normal" />文件夹里把flv文件拷出来就行了~</p><p style="line-height: normal">后来又想，用迅雷或者快车直接把flv文件下载不是更快吗？我试了一下。浏览器我用的是<br style="line-height: normal" />遨游v2.0.4.5799版本，它的&ldquo;工具&rdquo;里有个网页嗅探器功能，可以直接获得flv文件的真实地址。<br style="line-height: normal" />比如我要看这个页面的视频：<a href="http://www.56.com/u94/v_MjA1NDQxMjM.html" style="line-height: normal">http://www.56.com/u94/v_MjA1NDQxMjM.html</a><br style="line-height: normal" />点 &ldquo;工具&rdquo;--&ldquo;网页嗅探器&rdquo; ，就能看见地址了：<br style="line-height: normal" /><a href="http://hot3-chinacache.56.com/flvdownload/27/24/ovashaman@56.com_56flv_zhajm_119218014322x.flv" style="line-height: normal">http://hot3-chinacache.56.com/flvdownload/27/24/ovashaman@56.com_56flv_zhajm_119218014322x.flv</a><br style="line-height: normal" />我把这个地址复制到了迅雷5里，可是并不能下载。用快车也不行。不知道服务器那边是怎么设置的防下载，<br style="line-height: normal" />不论我怎么改迅雷的设置都是找不到资源无法下载。</p><p style="line-height: normal">无奈之下去网上搜了几款flv专用下载软件，终于发现了一个好用的。<br style="line-height: normal" />【维棠FLV视频下载软件】 下载地址：<br style="line-height: normal" /><a target="_blank" style="line-height: normal" href="http://cn.vidownonline.com/data/ViDown_0.8.4_setup.exe">http://cn.vidownonline.com/data/ViDown_0.8.4_setup.exe</a><br style="line-height: normal" />使用方法和迅雷一样，因为专下flv所以更智能，仍以上面那个视频为例，你只要把页面地址<span class="Apple-converted-space">&nbsp;</span><a href="http://www.56.com/u94/v_MjA1NDQxMjM.html" style="line-height: normal">http://www.56.com/u94/v_MjA1NDQxMjM.html</a><span class="Apple-converted-space">&nbsp;</span>复制到&ldquo;视频网址&rdquo;里，它会自动分析页面上载入的flv文件并下载。<br style="line-height: normal" />56视频网的速度是很快的，用这个软件下flv，我这的下载速度能达到156k/s，这样一个破网我已经很知足了，哈哈。</p><p style="line-height: normal">当然，网络好的怎么下载都会很快，网络不好的用这种方法心里会更舒服一点。<br style="line-height: normal" />如果你在视频网站上看到了好的短片或者电影（比如说youtobe站上的）但是迅雷和BT上都没有的话，用这个方法就再合适不过了~~</p><p style="line-height: normal">---------以上个人观点，仅供参考-------Frog.Kc</p></span></span></p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/249.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=249</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=249&amp;key=f370d0f5</trackback:ping></item><item><title>Flash运行时错误代码解释说明</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/175.html</link><pubDate>Tue, 18 Jan 2011 09:24:49 +0800</pubDate><guid>http://camnpr.com/flash-air/175.html</guid><description><![CDATA[<p>运行时可能发生以下错误。在 ActionScript 3.0 中，无论是在严谨模式下还是在警告模式下编译，都将进行运行时类型检查。</p>    <p>代码    <br />消息     <br />说明</p>  <p><a name="1000"></a><b>1000</b>     <br />系统内存不足。     <br />系统可用内存无法满足 Flash Player 编译代码的需要。请关闭系统上正在运行的某些应用程序或进程。</p>  <p><a name="1001"></a><b>1001</b>     <br />未实现方法 %1。</p>  <p><a name="1002"></a><b>1002</b>     <br />Number.toPrecision 的范围是 1 至 21。Number.toFixed 和 Number.toExponential 的范围是 0 至 20。指定的值不在期望范围之内。     <br />指定的值不在 <code>precision</code> 参数的期望范围之内。Number.toPrecision 的范围是 1 至 21。Number.toFixed 和 Number.toExponential 的范围是 0 至 20。</p>  <p><a name="1003"></a><b>1003</b>     <br />radix 参数必须介于 2 至 36 之间；实际得到的是 %1。     <br />为方法或属性的 <code>radix</code> 参数传递的值小于 2 或大于 36。请传递一个介于 2 至 36 之间的值作为 <code>radix</code> 参数。</p>  <p><a name="1004"></a><b>1004</b>     <br />对不兼容的对象调用了方法 %1。     <br />尝试调用的方法不适用于指定对象。如果已将原型函数从一个对象复制到另一个对象然后又调用此函数，但目标对象类型与原始对象类型不同，则会发生此错误。请确保目标对象与原始对象的类型相同。有关详细信息，请参阅 ECMAScript Language Specification（《ECMAScript 语言规范》）第 3 版中的第 15 章。</p>  <p><a name="1005"></a><b>1005</b>     <br />数组索引不是正整数 (%1)。     <br />尝试使用非正整数的索引值访问数组成员。仅传递正整数作为数组的索引值。</p>  <p><a name="1006"></a><b>1006</b>     <br />%1 不是函数。     <br />尝试调用不存在的函数时，发生此错误。请确保正在调用正确的函数且自 ActionScript 2.0 以来此 API 尚未发生更改。此外，请确保正在使用正确的对象。例如，使用以下代码时，将出现此错误（由于最后一行错误地调用了变量 <code>big</code>，而非 <code>blg</code>）：</p>  <pre><code>var blg:String = &quot;foo&quot;;<br />var big:Sprite = new Sprite();<br />var error:int = big.length(); </code></pre>  <p><a name="1007"></a><b>1007</b>     <br />尝试实例化的函数不是构造函数。</p>  <p><a name="1008"></a><b>1008</b>     <br />%1 指代不明确；找到了多个匹配的绑定。</p>  <p><a name="1009"></a><b>1009</b>     <br />无法访问空对象引用的属性或方法。     <br />计算结果为 <code>null</code> 的对象可以不包含任何属性。在某些意外（尽管有效）的情况下，可能发生此错误。以创建 Sprite 对象的以下代码为例。由于从未将此 Sprite 对象添加到显示列表中（使用 DisplayObjectContainer 对象的 <code>addChild()</code> 方法），因此其 <code>stage</code> 属性设置为 <code>null</code>。在这种情况下，此示例将生成此错误，这是因为 Sprite 对象的 <code>stage</code> 属性不能拥有任何属性：</p>  <pre><code>import flash.display.Sprite;<br />var sprite1:Sprite = new Sprite();<br />var q:String = sprite1.stage.quality;</code></pre>  <p><a name="1010"></a><b>1010</b>     <br />术语尚未定义，并且无任何属性。     <br />如果尝试访问并不存在的对象的属性，将发生此错误。例如：</p>  <pre><code>var obj:Object = new Object();<br />obj.a = &quot;foo&quot;;<br />trace(obj.b.prop);</code></pre>  <p>由于拼写错误也可能产生此错误，在下面的示例中，<code>mc</code> 表示显示列表中的 MovieClip 对象，<code>stage</code> 属性中的小写字母 s 被错误地拼写为大写字母 S（应该为 <code>stage</code>）：</p>  <pre><code>trace(mc.Stage.quality);</code></pre>  <p><a name="1011"></a><b>1011</b>     <br />方法 %1 包含非法的 opcode %2（在偏移 %3 处）。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1012"></a><b>1012</b>     <br />最后一条指令超出代码大小。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1013"></a><b>1013</b>     <br />当 scopeDepth 为 0 时，无法调用 OP_findproperty。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1014"></a><b>1014</b>     <br />找不到类 %1。</p>  <p><a name="1015"></a><b>1015</b>     <br />方法 %1 无法设置默认的 XML 命名空间。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1016"></a><b>1016</b>     <br />类型 %1 不支持后代运算符 (..)。</p>  <p><a name="1017"></a><b>1017</b>     <br />发生范围堆栈上溢。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1018"></a><b>1018</b>     <br />发生范围堆栈下溢。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1019"></a><b>1019</b>     <br />Getscopeobject %1 超出范围。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1020"></a><b>1020</b>     <br />代码不能超出方法结尾。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1021"></a><b>1021</b>     <br />至少一个分支目标不是方法中的有效指令。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1022"></a><b>1022</b>     <br />void 类型只能用作函数返回类型。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1023"></a><b>1023</b>     <br />发生堆栈上溢。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1024"></a><b>1024</b>     <br />发生堆栈下溢。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1025"></a><b>1025</b>     <br />访问了无效的寄存器 %1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1026"></a><b>1026</b>     <br />插槽 %1 超出 %3 的 slotCount=%2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1027"></a><b>1027</b>     <br />Method_info %1 超出 method_count=%2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1028"></a><b>1028</b>     <br />Disp_id %1 超出 %3 的 max_disp_id=%2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1029"></a><b>1029</b>     <br />Disp_id %1 未在 %2 中定义。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1030"></a><b>1030</b>     <br />堆栈深度不对称。 %1 != %2.     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1031"></a><b>1031</b>     <br />范围深度不对称。 %1 != %2.     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1032"></a><b>1032</b>     <br />Cpool 索引 %1 超出范围 %2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1033"></a><b>1033</b>     <br />Cpool 条目 %1 是错误的类型。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1034"></a><b>1034</b>     <br />类型强制转换失败: 无法将 %1 转换为 %2。</p>  <p><a name="1035"></a><b>1035</b>     <br />在方法 %1 中发现了非法的超级表达式。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1037"></a><b>1037</b>     <br />无法向 %2 上的方法 %1 赋值。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1038"></a><b>1038</b>     <br />已定义 %1。     <br />在同一作用域内，不能多次声明具有同一标识符名称的变量或函数。在 ActionScript 3.0 中，不同的代码块（如用于同一 <code>function</code> 定义中的两个 <code>for</code> 循环中的代码块）将被视为在同一作用域内。请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1039"></a><b>1039</b>     <br />在方法被引用之前无法对其进行验证。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1040"></a><b>1040</b>     <br />instanceof 的右侧必须是类或函数。     <br /><code>instanceof</code> 运算符右侧的表达式必须为类或函数。</p>  <p><a name="1041"></a><b>1041</b>     <br />运算符的右侧必须是类。     <br /><code>is</code> 运算符右侧的表达式必须为类。</p>  <p><a name="1042"></a><b>1042</b>     <br />不是 ABC 文件。major_version=%1 minor_version=%2。     <br />使用播放器尝试播放的文件无效：用于生成此 SWF 的工具可能已过期，或此 SWF 本身可能已损坏。</p>  <p><a name="1043"></a><b>1043</b>     <br />code_length=%1 无效。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1044"></a><b>1044</b>     <br />MethodInfo-%1 不支持 flags=%2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1045"></a><b>1045</b>     <br />不支持 traits kind=%1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1046"></a><b>1046</b>     <br />定义前引用了 MethodInfo-%1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1047"></a><b>1047</b>     <br />未找到入口点。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1049"></a><b>1049</b>     <br />原型对象必须是 vanilla 对象。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1050"></a><b>1050</b>     <br />无法将 %1 转换为原始类型。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1051"></a><b>1051</b>     <br />对 %1 的早期绑定访问非法。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1052"></a><b>1052</b>     <br />传递给 %1 函数的 URI 无效。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1053"></a><b>1053</b>     <br />非法覆盖 %1（在 %2 中）。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1054"></a><b>1054</b>     <br />异常处理函数中存在非法的范围或目标偏移量。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1056"></a><b>1056</b>     <br />无法在 %2 上创建属性 %1。     <br />正在尝试为非动态类实例中不存在的属性赋值。此操作仅适用于动态类的实例。</p>  <p><a name="1057"></a><b>1057</b>     <br />%1 中只能包含方法。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1058"></a><b>1058</b>     <br />非法的操作数类型: %1 必须为 %2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1059"></a><b>1059</b>     <br />定义前引用了 ClassInfo-%1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1060"></a><b>1060</b>     <br />ClassInfo %1 超出 class_count=%2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1061"></a><b>1061</b>     <br />将值 %1 转换为 %2 时无法不损失精度。     <br />如果尝试将小数赋给数据类型为 int 的属性，将出现此错误。</p>  <p>如果赋值超出范围，也会出现此错误，如下所示：</p>  <pre><code>var m0:int = 2147483648; // int.MAX_VALUE == 2147483647</code></pre>  <p>使用按位向左移位运算符 (&lt;&lt;) 时，也会出现此错误。例如，请考虑以下代码：</p>  <pre><code>var m0:uint = 0xFF;<br />var m1:uint = m0&lt;&amp;lt24;</code></pre>  <p>向左移位运算符 (&lt;&lt;) 的结果解释为 32 位带符号的 2 的补码数。在本示例中，结果为负值，将此结果赋予 uint 类型的属性时，将发生错误。解决方法如下所示：</p>  <pre><code>var m0:uint = 0xFF;<br />var m1:uint = uint(m0&lt;&lt;24);</code></pre>  <p><a name="1063"></a><b>1063</b>     <br />%1 中的参数数量不匹配。应为 %2 个，实为 %3 个。</p>  <p><a name="1064"></a><b>1064</b>     <br />不能调用方法 %1 作为构造函数。     <br />将提取的方法永久地绑定到提取这些方法的对象中。因此，以后不能将这些方法作为构造函数进行调用。例如，下面的代码将在类 A 中创建函数 <code>f()</code>：</p>  <pre><code>class A {<br />	   function f() {}<br />	}</code></pre><p>在以下代码中，提取此函数将不会产生错误。但创建此函数的新实例将产生错误。</p><pre><code>var a = new A()<br />	var m = a.f // extract f, don’t call it<br />	m() // same as a.f()<br />	new m() // causes this error</code></pre>  <p><a name="1065"></a><b>1065</b>     <br />未定义变量 %1。     <br />您所使用的词汇引用未定义。例如，在以下语句中，由于未定义 <code>x</code>，<code>trace(x)</code> 语句将生成错误。但是，由于定义了 <code>y</code>，因此 <code>trace(y)</code> 语句不会生成错误：</p>  <pre><code>trace(&quot;hello world&quot;)<br />	trace(x) // x is undefined<br />	var y<br />	trace(y) // No error, y is defined.</code></pre>  <p><a name="1066"></a><b>1066</b>     <br />不支持 function(’function body’) 形式。     <br />与 JavaScript 不同，Flash 不使用 <code>eval()</code> 和 <code>function()</code> 动态编译代码。因此，在 ActionScript 3.0 中将其作为构造函数进行调用将生成此错误。</p>  <p><a name="1067"></a><b>1067</b>     <br />本机方法 %1 中包含非法的方法体。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1068"></a><b>1068</b>     <br />无法协调 %1 和 %2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1069"></a><b>1069</b>     <br />在 %2 上找不到属性 %1，且没有默认值。     <br />在非动态类实例中引用了未定义的属性。例如，当以下代码引用未定义且不能动态创建的 <code>x</code> 属性时，将生成此错误：</p>  <pre><code>class A {} // sealed class, not dynamic<br />	trace(new A().x) // no property x defined on A, and A is not dynamic</code></pre>  <p><a name="1070"></a><b>1070</b>     <br />在 %2 上找不到方法 %1     <br />正在使用 <code>super</code> 语句调用函数，但超类中不存在该函数。例如，以下代码将生成此错误：</p>  <pre><code>class A() {}<br />class B extends A {<br />  function f() { trace(super.f()); } // error 1070, there is no f on A<br />}</code></pre>  <p><a name="1071"></a><b>1071</b>     <br />函数 %1 已绑定到 %2。</p>  <p><a name="1072"></a><b>1072</b>     <br />Disp_id 0 是非法的。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1073"></a><b>1073</b>     <br />已替换非覆盖方法 %1，因为 disp_id %2 重复。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1074"></a><b>1074</b>     <br />在 %2 上非法写入只读属性 %1。</p>  <p><a name="1075"></a><b>1075</b>     <br />Math 不是函数。     <br />正在尝试将 <code>math()</code> 作为函数进行调用，但 Math 是具有静态方法的类。</p>  <p><a name="1076"></a><b>1076</b>     <br />Math 不是构造函数。     <br />无法实例化 Math 类。</p>  <p><a name="1077"></a><b>1077</b>     <br />在 %2 上非法读取只写属性 %1。</p>  <p><a name="1078"></a><b>1078</b>     <br />非法的 opcode/multiname 组合: %1&lt;%2&gt;.     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1079"></a><b>1079</b>     <br />载入代码中不允许使用内置方法。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1080"></a><b>1080</b>     <br />非法的命名空间值。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1081"></a><b>1081</b>     <br />在 %2 上找不到属性 %1，且没有默认值。</p>  <p><a name="1082"></a><b>1082</b>     <br />未设置默认的命名空间。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1083"></a><b>1083</b>     <br />未绑定元素&ldquo;%2&rdquo;的前缀&ldquo;%1&rdquo;。     <br />属性名称或元素名称具有前缀，但未找到匹配的命名空间。由于没有与 <code>foo:x</code> 匹配的 <code>foo</code> 命名空间，因此此语句生成错误：</p>  <pre>&lt;foo:x xmlns:clowns=’http://circuscenter.org’&gt;</pre>  <p><a name="1084"></a><b>1084</b>     <br />元素或属性（&ldquo;%&rdquo;）与 QName 生成不匹配:QName::=(NCName’:’)?NCName。     <br />将 <code>foo:</code> 或 <code>:foo</code> 用作元素或属性名称，但是冒号的另一侧没有内容。</p>  <p><a name="1085"></a><b>1085</b>     <br />元素类型&ldquo;%1&rdquo;必须由相匹配的结束标签&ldquo;&rdquo;终止。</p>  <p><a name="1086"></a><b>1086</b>     <br />%1 方法只能用于包含单一项目的列表。     <br />如果 XMLList 类的列表中仅包含一个项，则此类将特定于 XML 的函数传播到它的一个子类。如果此列表中包含多个项，则例程会因此错误而失败。以下模拟 XML 函数的 XMLList 函数会发生此错误：</p>  <p><code>addNamespace</code>、<code>appendChild</code>、<code>childIndex</code>、<code>inScopeNamespaces</code>、<code>insertChildAfter</code>、<code>insertChildBefore</code>、<code>name</code>、<code>namespace</code>、<code>localName</code>、<code>namespaceDeclarations</code>、<code>nodeKind</code>、<code>prependChild</code>、<code>removeNamespace</code>、<code>replace</code>、<code>setChildren</code>、<code>setLocalName</code>、<code>setName</code>和 <code>setNamespace。</code></p>  <p><a name="1087"></a><b>1087</b>     <br />不允许对索引 XML 进行赋值。</p>  <p><a name="1088"></a><b>1088</b>     <br />文档中根元素后面的标记格式必须正确。     <br />下面为可能产生此错误的原因：</p>  <ul>   <li>将 XMLList 样式对象作为 XML 进行分析</li>    <li>字符串未均衡</li> </ul>  <p><a name="1089"></a><b>1089</b>     <br />不支持对包含多个项目的列表进行赋值。</p>  <p><a name="1090"></a><b>1090</b>     <br />XML 分析器失败：元素格式不正确。     <br />元素名称格式不正确。此示例中的元素名称格式不正确，因为结尾处的右尖括号 <code>&gt;</code> 丢失：</p>  <pre>&lt;a/&gt;&lt;b&gt;&lt;/b</pre>  <p><a name="1091"></a><b>1091</b>     <br />XML 分析器失败:CDATA 部分未结束。</p>  <p><a name="1092"></a><b>1092</b>     <br />XML 分析器失败:XML 声明未结束。</p>  <p><a name="1093"></a><b>1093</b>     <br />XML 分析器失败:DOCTYPE 声明未结束。</p>  <p><a name="1094"></a><b>1094</b>     <br />XML 分析器失败:注释未结束。</p>  <p><a name="1095"></a><b>1095</b>     <br />XML 分析器失败:属性未结束。</p>  <p><a name="1096"></a><b>1096</b>     <br />XML 分析器失败:元素未结束。</p>  <p><a name="1097"></a><b>1097</b>     <br />XML 分析器失败:正在处理的指令未结束。</p>  <p><a name="1098"></a><b>1098</b>     <br />表示无命名空间的前缀 %1 非法。     <br />如果尝试传入具有非空前缀的空 URI，此命名空间构造函数将引发此错误，如本例所示：</p>  <pre>ns = new Namespace (&quot;prefix&quot;, &quot;&quot;);<br/>	</pre>  <p><a name="1100"></a><b>1100</b>     <br />在由一个 RegExp 构建另一个的过程中无法提供标志。     <br />由现有的正则表达式创建新的正则表达式时，也会复制现有表达式的标志。如要创建具有不同标志的正则表达式，请使用 <code>new</code> 运算符并按照需要设置标志。例如，此语句创建正则表达式并指定标志设置：</p>  <pre><code>var re:RegExp = new RegExp(&quot;ali&quot;, /s)</code></pre><p>此语句也可以创建与 re 具有相同标志的正则表达式：</p><pre><code>var re2:RegExp = new RegExp(re, ...)</code></pre>  <p><a name="1101"></a><b>1101</b>     <br />无法验证具有未知作用域的方法 %1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1102"></a><b>1102</b>     <br />类型 %1 的默认值非法。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1103"></a><b>1103</b>     <br />类 %1 不能扩展最终基类。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1104"></a><b>1104</b>     <br />已为元素&ldquo;%1&rdquo;指定了属性&ldquo;%2&rdquo;。</p>  <p><a name="1107"></a><b>1107</b>     <br />ABC 数据已损坏，尝试的读取操作超出范围。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1108"></a><b>1108</b>     <br />OP_newclass opcode 使用的基类不正确。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1109"></a><b>1109</b>     <br />尝试从方法 %2 中直接调用未限定范围的函数 %1。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1110"></a><b>1110</b>     <br />%1 无法扩展 %2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1111"></a><b>1111</b>     <br />%1 无法实现 %2。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1112"></a><b>1112</b>     <br />类强制转换的参数数量不匹配。应为 1，实际得到的是 %1。</p>  <p><a name="1113"></a><b>1113</b>     <br />方法中使用的 OP_newactivation 没有 NEED_ACTIVATION 标志。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1114"></a><b>1114</b>     <br />使用的 OP_getglobalslot 或 OP_setglobalslot 不具有全局范围。     <br />请参见此表底部的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html#note">注意</a>。*</p>  <p><a name="1115"></a><b>1115</b>     <br />%1 不是构造函数。</p>  <p><a name="1116"></a><b>1116</b>     <br />Function.prototype.apply 的第二个参数必须是数组。</p>  <p><a name="1117"></a><b>1117</b>     <br />XML 名称无效: %1.</p>  <p><a name="1118"></a><b>1118</b>     <br />节点间存在非法循环。</p>  <p><a name="1119"></a><b>1119</b>     <br />%1 类型的操作数不支持删除运算符。</p>  <p><a name="1120"></a><b>1120</b>     <br />无法在 %2 上删除属性 %1。</p>  <p><a name="1121"></a><b>1121</b>     <br />方法 %1 具有重复的方法正文。</p>  <p><a name="1122"></a><b>1122</b>     <br />本机方法 %1 中包含非法的方法体。</p>  <p><a name="1123"></a><b>1123</b>     <br />类型 %1 不支持过滤运算符。</p>  <p><a name="1124"></a><b>1124</b>     <br />OP_hasnext2 要求对象和索引位于不同的寄存器。</p>  <p><a name="1125"></a><b>1125</b>     <br />索引 %1 超出范围 %2。</p>  <p><a name="1126"></a><b>1126</b>     <br />无法更改固定矢量的长度。</p>  <p><a name="1127"></a><b>1127</b>     <br />尝试对非参数化类型执行类型应用程序。</p>  <p><a name="1128"></a><b>1128</b>     <br />%1 的类型参数的数目不正确。应为 %2 个，实为 %3 个。</p>  <p><a name="1502"></a><b>1502</b>     <br />脚本的执行时间已经超过了 15 秒的默认超时设置。     <br />超时期间过后执行脚本。（默认超时期间为 15 秒。）发生此错误后，脚本可以继续执行 15 秒，然后将终止脚本并引发编号为 1503 的运行时错误（脚本在 30 秒内未能退出，终止其执行）。</p>  <p><a name="1503"></a><b>1503</b>     <br />脚本未能在 30 秒后退出而被终止。     <br />30 秒后仍然继续执行此脚本。如果此脚本的执行时间超过 15 秒（即默认的超时期间），Flash Player 将首先引发编号为 1502 的运行时错误（脚本的执行时间超过 15 秒的默认超时期间）。错误 1502 发生 15 秒后，发生此错误。</p>  <p><a name="1507"></a><b>1507</b>     <br />参数 %1 不能为 null。</p>  <p><a name="1508"></a><b>1508</b>     <br />为参数 %1 指定的值无效。     <br />您可能正在尝试传递错误的数据类型。例如，代码</p>  <pre><code>public function doSomething(const:int):void {<br />	}<br />	this [&quot;doSomething&quot;] (&quot;str&quot;)</code></pre><p>在运行时将生成错误，原因是将 <code>doSomething</code> 转换为 int 数据类型。</p><p><a name="1510"></a><b>1510</b>     <br />当回调参数为某个类的方法时，此可选参数必须为 null。</p>  <p><a name="2000"></a><b>2000</b>     <br />没有活动的安全上下文。</p>  <p><a name="2001"></a><b>2001</b>     <br />指定的参数太少；应为 %2，实际得到的是 %1。</p>  <p><a name="2002"></a><b>2002</b>     <br />尝试对无效的套接字进行操作。</p>  <p><a name="2003"></a><b>2003</b>     <br />指定的套接字端口号无效。     <br />有效范围介于 0 到 65535 之间。有关详细信息，请参阅本语言参考中的&ldquo;套接字连接&rdquo;。</p>  <p><a name="2004"></a><b>2004</b>     <br />某个参数无效。</p>  <p><a name="2005"></a><b>2005</b>     <br />参数 %1 的类型不正确。应为类型 %2。</p>  <p><a name="2006"></a><b>2006</b>     <br />提供的索引超出范围。</p>  <p><a name="2007"></a><b>2007</b>     <br />参数 %1 不能为 null。</p>  <p><a name="2008"></a><b>2008</b>     <br />参数 %1 必须是某个可接受的值。</p>  <p><a name="2009"></a><b>2009</b>     <br />此方法不能用于带有样式表的文本字段。</p>  <p><a name="2010"></a><b>2010</b>     <br />仅限于文件系统的 SWF 文件不得使用套接字。</p>  <p><a name="2011"></a><b>2011</b>     <br />与 %1 的套接字连接失败: %2。     <br />存在网络问题。可能是由于未解析 DNS 名称或未连接 TCP 套接字。</p>  <p><a name="2012"></a><b>2012</b>     <br />无法实例化 %1 类。</p>  <p><a name="2013"></a><b>2013</b>     <br />该功能只能在 Flash 创作工具中使用。</p>  <p><a name="2014"></a><b>2014</b>     <br />该功能目前无法使用。     <br />本系统不支持此功能。</p>  <p><a name="2015"></a><b>2015</b>     <br />无效的 BitmapData。</p>  <p><a name="2017"></a><b>2017</b>     <br />只有可信的本地文件可使 Flash Player 退出。</p>  <p><a name="2018"></a><b>2018</b>     <br />System.exit 仅在独立的 Flash Player 中可用。</p>  <p><a name="2019"></a><b>2019</b>     <br />指定的深度无效。</p>  <p><a name="2020"></a><b>2020</b>     <br />无法交换具有不同父级的 MovieClips 对象。</p>  <p><a name="2021"></a><b>2021</b>     <br />对象创建失败。</p>  <p><a name="2022"></a><b>2022</b>     <br />必须从 DisplayObject 继承 %1 类以链接到元件。</p>  <p><a name="2023"></a><b>2023</b>     <br />必须从 Sprite 继承 %1 类以链接到根。</p>  <p><a name="2024"></a><b>2024</b>     <br />不能将对象添加为其自身的子对象。</p>  <p><a name="2025"></a><b>2025</b>     <br />提供的 DisplayObject 必须是调用者的子级。</p>  <p><a name="2026"></a><b>2026</b>     <br />导航至 URL %1 时出现错误。     <br />可能的原因是此 URL 不存在、网络连接有问题或者 URL 在安全沙箱之外。</p>  <p><a name="2027"></a><b>2027</b>     <br />参数 %1 必须是非负数；实际得到的是 %2。</p>  <p><a name="2028"></a><b>2028</b>     <br />只能与本地文件系统的内容交互的 SWF 文件 %1 无法访问 Internet URL %2。</p>  <p><a name="2029"></a><b>2029</b>     <br />此 URLStream 对象中没有已打开的流。</p>  <p><a name="2030"></a><b>2030</b>     <br />遇到文件尾。</p>  <p><a name="2031"></a><b>2031</b>     <br />套接字错误。     <br />发生套接字错误。有关详细信息，请参阅本语言参考中的&ldquo;套接字连接&rdquo;。</p>  <p><a name="2032"></a><b>2032</b>     <br />流错误。</p>  <p><a name="2033"></a><b>2033</b>     <br />键生成失败。</p>  <p><a name="2034"></a><b>2034</b>     <br />提供的摘要无效。</p>  <p><a name="2035"></a><b>2035</b>     <br />找不到 URL。</p>  <p><a name="2036"></a><b>2036</b>     <br />加载未完成。</p>  <p><a name="2037"></a><b>2037</b>     <br />函数调用序列不正确，或前面的调用不成功。</p>  <p><a name="2038"></a><b>2038</b>     <br />文件 I/O 错误。</p>  <p><a name="2039"></a><b>2039</b>     <br />无效的远程 URL 协议。远程 URL 协议必须是 HTTP 或 HTTPS。</p>  <p><a name="2041"></a><b>2041</b>     <br />一次只能执行一个文件浏览会话。</p>  <p><a name="2042"></a><b>2042</b>     <br />此加载操作不支持摘要属性。</p>  <p><a name="2044"></a><b>2044</b>     <br />未处理的 %1。</p>  <p><a name="2046"></a><b>2046</b>     <br />已加载文件的签名无效。</p>  <p><a name="2047"></a><b>2047</b>     <br />安全沙箱冲突: %1: %2 无法访问 %3。</p>  <p><a name="2048"></a><b>2048</b>     <br />安全沙箱冲突: %1 无法从 %2 加载数据。</p>  <p><a name="2049"></a><b>2049</b>     <br />安全沙箱冲突: %1 无法将数据上载至 %2。</p>  <p><a name="2051"></a><b>2051</b>     <br />安全沙箱冲突: %1 无法在 %2 中计算脚本 URL（allowScriptAccess 为 %3）。尝试的 URL 为 %4。</p>  <p><a name="2052"></a><b>2052</b>     <br />allowDomain 和 allowInsecureDomain 只允许使用字符串参数。</p>  <p><a name="2053"></a><b>2053</b>     <br />安全沙箱冲突: %1 不能清除由 %2 设定的间隔定时器。</p>  <p><a name="2054"></a><b>2054</b>     <br />Security.exactSettings 的值在使用后便不能进行更改。</p>  <p><a name="2055"></a><b>2055</b>     <br />无法开始打印作业。</p>  <p><a name="2056"></a><b>2056</b>     <br />无法将打印作业发送至打印机。</p>  <p><a name="2057"></a><b>2057</b>     <br />无法将此页面添加至打印作业。     <br />未正确使用 <code>addPage()</code> 方法。请参阅此语言参考中的 addPage() 条目。</p>  <p><a name="2058"></a><b>2058</b>     <br />解压缩数据时出错。</p>  <p><a name="2059"></a><b>2059</b>     <br />安全沙箱冲突: %1 不能覆盖由 %2 添加的 ExternalInterface 回调。</p>  <p><a name="2060"></a><b>2060</b>     <br />安全沙箱冲突: ExternalInterface 调用方 %1 无法访问 %2。</p>  <p><a name="2061"></a><b>2061</b>     <br />没有注册 ExternalInterface 回调 %1。</p>  <p><a name="2062"></a><b>2062</b>     <br />Event 的子类必须覆盖 clone() {return new MyEventClass (...);}。</p>  <p><a name="2063"></a><b>2063</b>     <br />尝试执行 IME 命令时出错。     <br />一个 IME 服务失败。</p>  <ul>   <li>若使用的是 <code>setConversionMode()</code> 或 <code>setEnabled()</code> 方法，则 ActionScript 3.0 用 <code>access</code> 属性替换这些方法。</li>    <li>若使用的是 <code>doConversion()</code> 或 <code>setComposition()</code> 方法，则上述方法不受 Macintosh OSX 支持。</li> </ul>  <p><a name="2065"></a><b>2065</b>     <br />无法设置此目标的焦点。</p>  <p><a name="2066"></a><b>2066</b>     <br />指定的计时器延迟超出范围。</p>  <p><a name="2067"></a><b>2067</b>     <br />ExternalInterface 在此容器中不可用。ExternalInterface 要求使用 Internet Explorer ActiveX、Firefox、Mozilla 1.7.5 及其更高版本或其它支持 NPRuntime 的浏览器。</p>  <p><a name="2068"></a><b>2068</b>     <br />声音无效。</p>  <p><a name="2069"></a><b>2069</b>     <br />Loader 类不实现此方法。</p>  <p><a name="2070"></a><b>2070</b>     <br />安全沙箱冲突: 调用方 %1 无法访问属于 %2 的 Stage。</p>  <p><a name="2071"></a><b>2071</b>     <br />Stage 类不实现此属性或方法。</p>  <p><a name="2074"></a><b>2074</b>     <br />舞台太小，放不下下载 UI。</p>  <p><a name="2075"></a><b>2075</b>     <br />下载的文件无效。     <br />可能的原因是文件解压缩失败、文件格式无效或签名验证失败。</p>  <p><a name="2077"></a><b>2077</b>     <br />无法使用指定的输入参数执行此过滤操作。</p>  <p><a name="2078"></a><b>2078</b>     <br />无法修改位于时间轴上的对象的名称属性。</p>  <p><a name="2079"></a><b>2079</b>     <br />Bitmap 派生的类只能与 defineBits 字符（位图）关联。</p>  <p><a name="2082"></a><b>2082</b>     <br />连接失败，因为该对象已连接。</p>  <p><a name="2083"></a><b>2083</b>     <br />关闭失败，因为该对象未连接。</p>  <p><a name="2084"></a><b>2084</b>     <br />参数的 AMF 编码不能超过 40K。</p>  <p><a name="2085"></a><b>2085</b>     <br />参数 %1 必须为非空字符串。</p>  <p><a name="2086"></a><b>2086</b>     <br />mms.cfg 文件中的设置禁止此 FileReference 请求。</p>  <p><a name="2087"></a><b>2087</b>     <br />FileReference.download() 文件名包含禁止的字符。     <br />文件名不能包含空格或以下任何字符: /、\、:、*、?、&quot;、&lt;、&gt;、|、% 或 ASCII 控制字符 0 至 31（0x00 至 0X1F）。此外，某些浏览器或服务器可能不支持长度超过 256 个字符的文件名。</p>  <p><a name="2088"></a><b>2088</b>     <br />Proxy 类不实现 getProperty。它必须由一个子类覆盖。</p>  <p><a name="2089"></a><b>2089</b>     <br />Proxy 类不实现 setProperty。它必须由一个子类覆盖。</p>  <p><a name="2090"></a><b>2090</b>     <br />Proxy 类不实现 callProperty。它必须由一个子类覆盖。</p>  <p><a name="2091"></a><b>2091</b>     <br />Proxy 类不实现 hasProperty。它必须由一个子类覆盖。</p>  <p><a name="2092"></a><b>2092</b>     <br />Proxy 类不实现 deleteProperty。它必须由一个子类覆盖。</p>  <p><a name="2093"></a><b>2093</b>     <br />Proxy 类不实现 getDescendants。它必须由一个子类覆盖。</p>  <p><a name="2094"></a><b>2094</b>     <br />事件调度递归溢出。     <br />递归超过最大递归深度。（默认的最大递归深度为 256。）</p>  <p><a name="2095"></a><b>2095</b>     <br />%1 无法调用回调 %2。</p>  <p><a name="2096"></a><b>2096</b>     <br />HTTP 请求标头 %1 不能通过 ActionScript 设置。     <br />您正在将一个禁用的 HTTP 标头添加到 HTTP 请求中。有关禁用的 HTTP 请求标头的完整列表，请参阅 <a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/net/URLRequestHeader.html">flash.net.URLRequestHeader</a> 类。</p>  <p><a name="2097"></a><b>2097</b>     <br />FileFilter 数组格式不正确。     <br />存在两种有效格式:</p>  <ul>   <li>仅包含 Windows 文件扩展名的描述</li>    <li>包含 Windows 文件扩展名和 Macintosh 文件格式的描述。</li> </ul>  <p>这两种文件格式不能互换；您只能使用其中的一种。有关详细信息，请参阅本语言参考中的 FileFilter 类。</p>  <p><a name="2098"></a><b>2098</b>     <br />正在加载的对象不是一个 .swf 文件，无法请求获取其 SWF 属性。</p>  <p><a name="2099"></a><b>2099</b>     <br />正在加载的对象因尚未完全加载而无法提供此信息。</p>  <p><a name="2100"></a><b>2100</b>     <br />Loader.loadBytes() 中 ByteArray 参数的长度必须大于 0。</p>  <p><a name="2101"></a><b>2101</b>     <br />传递给 URLVariables.decode() 的字符串必须是包含名称/值对的 URL 编码的查询字符串。</p>  <p><a name="2102"></a><b>2102</b>     <br />前面的 XMLNode 参数必须是调用者的子级。</p>  <p><a name="2103"></a><b>2103</b>     <br />XML 递归失败: 新子级将创建无限循环。     <br />可能是由于您正在尝试使对象互为子对象。例如，以下代码会生成此错误，因为 a 和 b 都在尝试将对方添加为子对象。</p>  <pre>a.addChild(b);<br/>b.addChild(a);</pre>  <p><a name="2105"></a><b>2105</b>     <br />Proxy 类不实现 nextNameIndex。它必须由一个子类覆盖。</p>  <p><a name="2106"></a><b>2106</b>     <br />Proxy 类不实现 nextName。它必须由一个子类覆盖。</p>  <p><a name="2107"></a><b>2107</b>     <br />Proxy 类不实现 nextValue。它必须由一个子类覆盖。</p>  <p><a name="2108"></a><b>2108</b>     <br />找不到场景 %1。</p>  <p><a name="2109"></a><b>2109</b>     <br />在场景 %2 中找不到帧标签 %1。</p>  <p><a name="2110"></a><b>2110</b>     <br />除非调用者可访问舞台并位于 ActionScript 3.0 SWF 文件中，否则无法设置 Security.disableAVM1Loading 的值。</p>  <p><a name="2111"></a><b>2111</b>     <br />Security.disableAVM1Loading 的值为 true，因此当前加载的 ActionScript 1.0/2.0 SWF 文件已被阻止。</p>  <p><a name="2112"></a><b>2112</b>     <br />提供的参数 LoaderContext.ApplicationDomain 来自禁用的域。</p>  <p><a name="2113"></a><b>2113</b>     <br />提供的参数 LoaderContext.SecurityDomain 来自禁用的域。</p>  <p><a name="2114"></a><b>2114</b>     <br />参数 %1 必须为 null。</p>  <p><a name="2115"></a><b>2115</b>     <br />参数 %1 必须为 false。</p>  <p><a name="2116"></a><b>2116</b>     <br />参数 %1 必须为 true。</p>  <p><a name="2118"></a><b>2118</b>     <br />LoaderInfo 类不实现此方法。</p>  <p><a name="2119"></a><b>2119</b>     <br />安全沙箱冲突: 调用方 %1 无法访问属于 %2 的 LoaderInfo.applicationDomain。</p>  <p><a name="2121"></a><b>2121</b>     <br />安全沙箱冲突: %1: %2 无法访问 %3。可以通过调用 Security.allowDomain 来避免此冲突。</p>  <p><a name="2122"></a><b>2122</b>     <br />安全沙箱冲突: %1: %2 无法访问 %3。需要一个策略文件，但在加载此媒体时未设置 checkPolicyFile 标志。</p>  <p><a name="2123"></a><b>2123</b>     <br />安全沙箱冲突: %1: %2 无法访问 %3。没有已授予访问权限的策略文件。</p>  <p><a name="2124"></a><b>2124</b>     <br />加载的文件为未知类型。</p>  <p><a name="2125"></a><b>2125</b>     <br />安全沙箱冲突: %1 不能使用运行时共享库 %2，原因是不允许在 ActionScript 3.0 和 ActionScript 1.0/2.0 对象之间跨越边界。</p>  <p><a name="2126"></a><b>2126</b>     <br />必须连接 NetConnection 对象。</p>  <p><a name="2127"></a><b>2127</b>     <br />FileReference POST 数据的类型不能为 ByteArray。</p>  <p><a name="2129"></a><b>2129</b>     <br />连接到 %1 失败。</p>  <p><a name="2130"></a><b>2130</b>     <br />无法刷新 SharedObject。</p>  <p><a name="2131"></a><b>2131</b>     <br />无法找到定义 %1。</p>  <p><a name="2132"></a><b>2132</b>     <br />无法从 netStatus 事件处理函数调用 NetConnection.connect。</p>  <p><a name="2133"></a><b>2133</b>     <br />未注册回调 %1。</p>  <p><a name="2134"></a><b>2134</b>     <br />无法创建 SharedObject。</p>  <p><a name="2136"></a><b>2136</b>     <br />SWF 文件 %1 包含无效数据。</p>  <p><a name="2137"></a><b>2137</b>     <br />安全沙箱冲突: %1 不能在 %3 中导航窗口 %2（allowScriptAccess 为 %4）。尝试的 URL 为 %5。</p>  <p><a name="2138"></a><b>2138</b>     <br />无法分析丰富格式文本 XML。</p>  <p><a name="2139"></a><b>2139</b>     <br />无法连接 SharedObject。</p>  <p><a name="2140"></a><b>2140</b>     <br />安全沙箱冲突: %1 无法加载 %2。只能与本地文件系统内容交互的 SWF 文件和只能与远程内容交互的 SWF 文件不能彼此加载对方。</p>  <p><a name="2141"></a><b>2141</b>     <br />一次只能使用一个 PrintJob。</p>  <p><a name="2142"></a><b>2142</b>     <br />安全沙箱冲突: 本地 SWF 文件不能使用 LoaderContext.securityDomain 属性。%1 正在尝试加载 %2。</p>  <p><a name="2143"></a><b>2143</b>     <br />AccessibilityImplementation.get_accRole() 必须由其默认值覆盖。</p>  <p><a name="2144"></a><b>2144</b>     <br />AccessibilityImplementation.get_accState() 必须由其默认值覆盖。</p>  <p><a name="2145"></a><b>2145</b>     <br />requestHeaders 的累计长度必须少于 8192 个字符。</p>  <p><a name="2146"></a><b>2146</b>     <br />安全沙箱冲突: %1 无法调用 %2，原因是 HTML/容器参数 allowNetworking 的值为 %3。</p>  <p><a name="2147"></a><b>2147</b>     <br />URL %1 中禁止的协议。</p>  <p><a name="2148"></a><b>2148</b>     <br />SWF 文件 %1 无法访问本地资源 %2。仅有只能与本地文件系统的内容交互的 SWF 文件和受信任的本地 SWF 文件才可以访问本地资源。</p>  <p><a name="2149"></a><b>2149</b>     <br />安全沙箱冲突: %1 无法对 %2 进行 fscommand 调用（allowScriptAccess 为 %3）。</p>  <p><a name="2150"></a><b>2150</b>     <br />无法将对象添加为它的一个子对象（或子对象的子对象等）的子对象。</p>  <p><a name="2151"></a><b>2151</b>     <br />设置对话框可见时无法进入全屏模式。</p>  <p><a name="2152"></a><b>2152</b>     <br />不允许使用全屏模式。</p>  <p><a name="2153"></a><b>2153</b>     <br />URLRequest.requestHeaders 数组必须仅包含非 NULL 的 URLRequestHeader 对象。</p>  <p><a name="2154"></a><b>2154</b>     <br />NetStream 对象无效。这可能是由于失败的 NetConnection 造成的。</p>  <p><a name="2155"></a><b>2155</b>     <br />ExternalInterface.call functionName 参数无效。仅支持字母数字字符。</p>  <p><a name="2156"></a><b>2156</b>     <br />使用协议 %2 无法访问端口 %1。正在调用的 SWF 是 %3。</p>  <p><a name="2157"></a><b>2157</b>     <br />拒绝 URL %1，原因是&ldquo;asfunction:&rdquo;协议仅可用于链接目标，而无法用于网络 API。</p>  <p><a name="2158"></a><b>2158</b>     <br />NetConnection 对象无效。这可能由于 NetConnection 已被删除。</p>  <p><a name="2159"></a><b>2159</b>     <br />SharedObject 对象无效。</p>  <p><a name="2160"></a><b>2160</b>     <br />TextLine 无效，不能用于访问 TextBlock 的当前状态。</p>  <p><a name="2161"></a><b>2161</b>     <br />设置文本布局时出现内部错误。</p>  <p><a name="2162"></a><b>2162</b>     <br />着色器输出类型与此操作不兼容。</p>  <p><a name="2163"></a><b>2163</b>     <br />着色器输入类型 %1 与此操作不兼容。</p>  <p><a name="2164"></a><b>2164</b>     <br />着色器输入 %1 丢失或其类型不受支持。</p>  <p><a name="2165"></a><b>2165</b>     <br />着色器输入 %1 没有足够的数据。</p>  <p><a name="2166"></a><b>2166</b>     <br />着色器输入 %1 缺少有效尺寸。</p>  <p><a name="2167"></a><b>2167</b>     <br />着色器没有此操作所需的足够数量的输入。</p>  <p><a name="2168"></a><b>2168</b>     <br />静态文本行没有原子，而且没有对文本块的引用。</p>  <p><a name="2169"></a><b>2169</b>     <br />方法 %1 不可用于浏览器脚本撰写。%3 请求的 URL %2 将被忽略。如果您打算调用浏览器脚本，请改用 navigateToURL。</p>  <p><a name="2170"></a><b>2170</b>     <br />安全沙箱冲突: %1 无法将 HTTP 标头发送到 %2。</p>  <p><a name="2171"></a><b>2171</b>     <br />Shader 对象不包含任何要执行的字节代码。</p>  <p><a name="2172"></a><b>2172</b>     <br />ShaderJob 已在运行中或已完成。</p>  <p><a name="2173"></a><b>2173</b>     <br />无法读取流中的对象。类 %1 虽未实现 flash.utils.IExternalizable，但由其别名可得知它是一个可扩展类。</p>  <p><a name="2174"></a><b>2174</b>     <br />对于每个 FileReference，每次只能执行一个下载、上载、加载或保存操作。</p>  <p><a name="2175"></a><b>2175</b>     <br />TextBlock 的内容中有一个或多个元素具有空 ElementFormat。</p>  <p><a name="2176"></a><b>2176</b>     <br />某些动作（如显示弹出窗口的动作）只能通过用户交互来调用，例如，单击鼠标或按下按钮。</p>  <p><a name="2177"></a><b>2177</b>     <br />着色器输入 %1 过大。</p>  <p><a name="2178"></a><b>2178</b>     <br />必须使用 Clipboard.generalClipboard 对象，而不是创建新的 Clipboard。</p>  <p><a name="2179"></a><b>2179</b>     <br />只有在处理 flash.events.Event.PASTE 事件时才能读取 Clipboard.generalClipboard 对象。</p>  <p><a name="2180"></a><b>2180</b>     <br />如果 AVM1 内容（AS1 或 AS2）已加载到 AVM2 (AS3) 内容中，则不可将其移动到 displayList 的其他部分。</p>  <p><a name="2181"></a><b>2181</b>     <br />TextLine 类不实现此属性或方法。</p>  <p><a name="2182"></a><b>2182</b>     <br />无效的 fieldOfView 值。此值必须大于 0 且小于 180。</p>  <p><a name="2183"></a><b>2183</b>     <br />缩放值不可为零。</p>  <p><a name="2184"></a><b>2184</b>     <br />ElementFormat 对象已锁定，无法修改。</p>  <p><a name="2185"></a><b>2185</b>     <br />FontDescription 对象已锁定，无法修改。</p>  <p><a name="2186"></a><b>2186</b>     <br />focalLength %1 无效。</p>  <p><a name="2187"></a><b>2187</b>     <br />方向样式 %1 无效。值必须是&ldquo;Orientation3D.EULER_ANGLES&rdquo;、&ldquo;Orientation3D.AXIS_ANGLE&rdquo;或&ldquo;Orientation3D.QUATERNION&rdquo;之一。</p>  <p><a name="2188"></a><b>2188</b>     <br />原始矩阵无效。矩阵必须是可逆的。</p>  <p><a name="2189"></a><b>2189</b>     <br />无法将 Matrix3D 分配给多个 DisplayObject。</p>  <p><a name="2190"></a><b>2190</b>     <br />加载 %1 的尝试失败，原因是它具有附件集的 Content-Disposition。</p>  <p><a name="2191"></a><b>2191</b>     <br />Clipboard.generalClipboard 对象只能作为用户交互（例如单击鼠标或按下按钮）的结果写入。</p>  <p><a name="3000"></a><b>3000</b>     <br />路径名非法。</p>  <p><a name="3001"></a><b>3001</b>     <br />文件或目录拒绝访问。</p>  <p><a name="3002"></a><b>3002</b>     <br />文件或目录已存在。</p>  <p><a name="3003"></a><b>3003</b>     <br />文件或目录不存在。</p>  <p><a name="3004"></a><b>3004</b>     <br />文件空间不足。</p>  <p><a name="3005"></a><b>3005</b>     <br />系统资源不足。</p>  <p><a name="3006"></a><b>3006</b>     <br />不是文件。</p>  <p><a name="3007"></a><b>3007</b>     <br />不是目录。</p>  <p><a name="3008"></a><b>3008</b>     <br />媒体为只读或受到写保护。</p>  <p><a name="3009"></a><b>3009</b>     <br />无法将文件或目录移动到其它设备。</p>  <p><a name="3010"></a><b>3010</b>     <br />目录不为空。</p>  <p><a name="3011"></a><b>3011</b>     <br />移动或复制的目标已存在。</p>  <p><a name="3012"></a><b>3012</b>     <br />无法删除文件或目录。</p>  <p><a name="3013"></a><b>3013</b>     <br />文件或目录正在使用中。</p>  <p><a name="3014"></a><b>3014</b>     <br />无法复制或移动文件或目录来覆盖包含目录。</p>  <p><a name="3015"></a><b>3015</b>     <br />不允许 Loader.loadBytes() 加载含可执行代码的内容。</p>  <p><a name="3100"></a><b>3100</b>     <br />仍在执行语句，无法关闭 SQLConnection。</p>  <p><a name="3101"></a><b>3101</b>     <br />数据库连接已打开。</p>  <p><a name="3102"></a><b>3102</b>     <br />所指定的名称参数无效。 参数不得为空。</p>  <p><a name="3103"></a><b>3103</b>     <br />在此连接上有打开事务时无法执行操作。</p>  <p><a name="3104"></a><b>3104</b>     <br />必须打开 SQLConnection 才能执行此操作。</p>  <p><a name="3105"></a><b>3105</b>     <br />只有在连接具有打开事务时才允许操作。</p>  <p><a name="3106"></a><b>3106</b>     <br />SQLStatement.executing 为 true 时无法更改属性。</p>  <p><a name="3107"></a><b>3107</b>     <br />只有 SQLResult.complete 为 false 时才能调用 %1。</p>  <p><a name="3108"></a><b>3108</b>     <br />未设置 SQLStatement.text 属性时不允许操作。</p>  <p><a name="3109"></a><b>3109</b>     <br />未设置 SQLStatement.sqlConnection 属性时不允许操作。</p>  <p><a name="3110"></a><b>3110</b>     <br />SQLStatement.executing 为 true 时无法执行操作。</p>  <p><a name="3111"></a><b>3111</b>     <br />所指定的架构类型无效。     <br />有效值为：</p>  <ul>   <li>SQLIndexSchema</li>    <li>SQLTableSchema</li>    <li>SQLTriggerSchema</li>    <li>SQLViewSchema</li> </ul>  <p><a name="3112"></a><b>3112</b>     <br />所指定的事务锁定类型无效。     <br />有效值为:</p>  <ul>   <li>SQLTransactionLockType.DEFERRED</li>    <li>SQLTransactionLockType.IMMEDIATE</li>    <li>SQLTransactionLockType.EXCLUSIVE</li> </ul>  <p><a name="3113"></a><b>3113</b>     <br />指定参考的类型不是 File。</p>  <p><a name="3114"></a><b>3114</b>     <br />所指定的打开模式无效。     <br />有效值为:</p>  <ul>   <li>SQLMode.READ</li>    <li>SQLMode.UPDATE</li>    <li>SQLMode.CREATE</li> </ul>  <p><a name="3115"></a><b>3115</b>     <br />SQL 错误。</p>  <p><a name="3116"></a><b>3116</b>     <br />发生内部逻辑错误。</p>  <p><a name="3117"></a><b>3117</b>     <br />访问权限被拒。     <br />表明因为 SQL 语句尝试执行其无权执行的操作（如指定要在视图上执行的 <code>INSERT</code> 操作）而操作失败。</p>  <p><a name="3118"></a><b>3118</b>     <br />操作中止。     <br />表明因执行中止而使 SQL 语句执行失败。 在使用指定了 prefetch 参数的 <code>SQLStatement.execute()</code> 或 <code>SQLStatement.next()</code> 执行语句但并未返回所有结果时，如果触发器中的代码使用 SQL <code>RAISE()</code> 函数取消操作或如果调用 <code>SQLConnection.cancel()</code> 或<code>SQLStatement.cancel()</code> 方法，则会发生此错误。</p>  <p><a name="3119"></a><b>3119</b>     <br />数据库文件当前已锁定。</p>  <p><a name="3120"></a><b>3120</b>     <br />表已锁定。     <br />表明因为另一个 AIR 应用程序对操作中涉及的表保持锁定而使操作无法完成。 如果一个通过 SQLConnection 执行的语句尝试写入一个表，而此时另一个有打开事务的 SQLConnection 正在向该表写入内容，或一个 SQLConnection 尝试从另一个 SQLConnection 具有独占锁定事务的表中读取或写入内容，则会发生这种错误。</p>  <p><a name="3121"></a><b>3121</b>     <br />内存不足。</p>  <p><a name="3122"></a><b>3122</b>     <br />尝试写入只读数据库。     <br />表明操作无法完成是因数据库为只读。 如果在操作系统中将数据库文件指定为只读，如果以只读模式打开数据库，或者如果早期版本的 Adobe AIR 访问用较新版本的运行时创建的数据库文件，就会发生此错误。</p>  <p><a name="3123"></a><b>3123</b>     <br />数据库磁盘映像格式不正确。     <br />表明所指定的文件是一个数据已损坏的数据库文件而使操作失败。 如果应用程序在事务执行过程中强制退出，或数据库文件有打开的事务且该事务在重新打开文件时不能回滚，则会发生此错误。</p>  <p><a name="3124"></a><b>3124</b>     <br />数据库已满，插入失败。</p>  <p><a name="3125"></a><b>3125</b>     <br />无法打开数据库文件。     <br />表明因为无法打开数据库文件而无法完成连接。 如果在 <code>openMode</code> 参数设置为 <code>SQLMode.UPDATE</code> 并且不存在数据库文件时调用 <code>SQLConnection.open()</code> 或 <code>SQLConnection.openAsync()</code>，就会发生此错误。 如果操作系统在运行时尝试访问数据库文件时返回错误，则也会发生此错误。</p>  <p><a name="3126"></a><b>3126</b>     <br />数据库锁定协议错误。</p>  <p><a name="3127"></a><b>3127</b>     <br />数据库为空。</p>  <p><a name="3128"></a><b>3128</b>     <br />发生磁盘 I/O 错误。     <br />表明因磁盘 I/O 错误而无法完成操作。 如果运行时尝试删除临时文件，而另一个程序（如病毒保护应用程序）正锁定该文件，就会发生此错误。 如果运行时尝试将数据写入文件，但无法写入数据，则也会发生此错误。</p>  <p><a name="3129"></a><b>3129</b>     <br />数据库架构已更改。     <br />表明因架构错误而无法完成操作。 在准备好语句之后但在其执行完毕之前数据库的架构发生变化（例如，如果将两个 SQLConnection 实例连接到同一数据库，并且其中一个实例在另一个实例正在读取架构时更改了架构）时，就会发生此错误。</p>  <p><a name="3130"></a><b>3130</b>     <br />表中某一行的数据过多。</p>  <p><a name="3131"></a><b>3131</b>     <br />因违反约束而中止。     <br />表明因语句导致违反一个或多个数据完整性约束而无法完成操作。 这是创建表结构时在其中定义的约束。 有关详细信息，请参阅附录<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/localDatabaseSQLSupport.html">本地数据库中的 SQL 支持</a>中的 <a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/localDatabaseSQLSupport.html#createTable">CREATE TABLE</a> 一节。</p>  <p><a name="3132"></a><b>3132</b>     <br />数据类型不匹配。     <br />表明因数据类型不匹配错误而无法完成操作。 某个值的数据类型与预期或所需的类型不匹配时，就会发生此错误。 有关详细信息，请参阅附录<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/localDatabaseSQLSupport.html">本地数据库中的 SQL 支持</a>中的<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/localDatabaseSQLSupport.html#dataTypes">数据类型支持</a>一节。</p>  <p><a name="3133"></a><b>3133</b>     <br />发生了内部错误。</p>  <p><a name="3134"></a><b>3134</b>     <br />本操作系统不支持此功能。</p>  <p><a name="3135"></a><b>3135</b>     <br />授权被拒。</p>  <p><a name="3136"></a><b>3136</b>     <br />辅助数据库格式错误。</p>  <p><a name="3137"></a><b>3137</b>     <br />为参数指定的索引超出范围。     <br />表明因参数索引无效（例如，如果用小于 0 的索引指定参数，或者如果使用索引 7 指定参数，但语句文本仅包含 5 个参数）而无法完成操作。</p>  <p><a name="3138"></a><b>3138</b>     <br />打开的文件不是数据库文件。</p>  <p><a name="3139"></a><b>3139</b>     <br />指定的页面大小对此操作无效。</p>  <p><a name="3140"></a><b>3140</b>     <br />指定的加密密钥大小对此操作无效。 密钥长度必须为 16 个字节</p>  <p><a name="3141"></a><b>3141</b>     <br />不支持所请求的数据库配置。</p>  <p><a name="3143"></a><b>3143</b>     <br />不能对解密的数据库重新加密。</p>  <p><a name="3200"></a><b>3200</b>     <br />无法对已关闭的窗口执行操作。</p>  <p><a name="3201"></a><b>3201</b>     <br />找不到 Adobe Reader。</p>  <p><a name="3202"></a><b>3202</b>     <br />找不到 Adobe Reader 8.1 或更高版本。</p>  <p><a name="3203"></a><b>3203</b>     <br />默认的 Adobe Reader 必须为 8.1 版或更高版本。</p>  <p><a name="3204"></a><b>3204</b>     <br />尝试加载 Adobe Reader 时发生错误。</p>  <p><a name="3205"></a><b>3205</b>     <br />仅应用程序沙箱内容可以访问此功能。</p>  <p><a name="3206"></a><b>3206</b>     <br />调用者 %1 无法设置 LoaderInfo 属性 %2。</p>  <p><a name="3207"></a><b>3207</b>     <br />应用程序沙箱内容无法访问此功能。</p>  <p><a name="3208"></a><b>3208</b>     <br />尝试访问无效的剪贴板。</p>  <p><a name="3209"></a><b>3209</b>     <br />尝试访问过期的剪贴板。</p>  <p><a name="3300"></a><b>3300</b>     <br />凭证无效。</p>  <p><a name="3301"></a><b>3301</b>     <br />用户身份验证失败。</p>  <p><a name="3302"></a><b>3302</b>     <br />FMRMS 不支持 SSL。</p>  <p><a name="3303"></a><b>3303</b>     <br />内容已到期。</p>  <p><a name="3304"></a><b>3304</b>     <br />用户授权失败（例如，用户尚未购买内容）。</p>  <p><a name="3305"></a><b>3305</b>     <br />无法连接到服务器。</p>  <p><a name="3306"></a><b>3306</b>     <br />需要更新客户端（FMRMS 需要新的 DRM 客户端引擎）。</p>  <p><a name="3307"></a><b>3307</b>     <br />一般内部 DRM 故障。</p>  <p><a name="3308"></a><b>3308</b>     <br />许可证密钥错误。</p>  <p><a name="3309"></a><b>3309</b>     <br />FLV 内容已损坏。</p>  <p><a name="3310"></a><b>3310</b>     <br />应用程序的应用程序 ID 与 DRM 策略中指定的 ID 不匹配。</p>  <p><a name="3311"></a><b>3311</b>     <br />应用程序的版本与 DRM 策略中指定的版本不匹配。</p>  <p><a name="3312"></a><b>3312</b>     <br />凭证完整性检查失败。</p>  <p><a name="3313"></a><b>3313</b>     <br />写入 Microsafe 失败。</p>  <p><a name="3314"></a><b>3314</b>     <br />FLV 头完整性检查失败。</p>  <p><a name="3315"></a><b>3315</b>     <br />当前的安全上下文不允许此操作</p>  <p><a name="note"></a>* 注意：此错误指示 SWF 中的 ActionScript 无效。 如果您认为文件未损坏，请向 Adobe 报告此问题。</p>  <p>&nbsp;</p>  <p>查看原文:<a href="http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html">http://help.adobe.com/zh_CN/AIR/1.5/jslr/runtimeErrors.html</a></p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/175.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=175</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=175&amp;key=57b9238d</trackback:ping></item><item><title>关于flash读取asp动态xml内容时出现的乱码的问题</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/168.html</link><pubDate>Mon, 17 Jan 2011 11:25:33 +0800</pubDate><guid>http://camnpr.com/flash-air/168.html</guid><description><![CDATA[<p>扁头大熊猫</p> <p>2007-08-28, 09:29 AM</p> <p>本地测试完全没问题， 一旦把xml用asp输出就有乱码问题了(可以刷新几次解决)，把asp动态生成的内容复制出来存为xml文件乱码又没有了。  大家碰到过这个问题吗？ 困扰我好久了。</p> <hr />  <p>love黄家驹</p> <p>2007-08-28, 09:56 AM</p> <p>//在Flash代码帧中加入以下代码 <br />System.useCodepage = true;</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-28, 10:40 AM</p> <p>这个我加过的阿， 但是还是乱码。 <br />http://60.63.205.70/index/index_cn.asp 的最新动态那些文字  <br />http://60.63.205.70/news/process_xml.asp 这个是xml文件</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-28, 10:50 AM</p> <p>看那些乱码的内容貌似没把process_xml.asp里的内容load完整就解析了，为此我加了个loading但是还不行。 :(</p> <hr />  <p>love黄家驹</p> <p>2007-08-28, 11:26 AM</p> <p>//把XML里的这句去掉就OK了. <br />&lt;?xml version=’1.0’ encoding=’utf-8’?&gt; <br />//  或是把它改成下面这句就行了,呵呵~ <br />&lt;?xml version=’1.0’ encoding=’GB2312’ ?&gt;</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-28, 01:19 PM</p> <p>谢谢 班主 <br />我现在把System.useCodepage = true 删除, xml的开头写gb2312 <br />在IE缓存清空的情况下,  显示正常了, 但是点其他页面再回来看就又老问题. :mad:</p> <hr />  <p>love黄家驹</p> <p>2007-08-28, 01:34 PM</p> <p>//这句不能删除呀,汗~ <br />System.useCodepage = true 删除 <br />//直接把 &lt;?xml  version=’1.0’ encoding=’utf-8’?&gt; 这句换成下面那句吧.... <br />&lt;?xml version=’1.0’  encoding=’GB2312’ ?&gt; <br />自己再检查一下配置文件,可能有存在一些小的错误....  也可以找一下XML的书写格式,跟你自己写的作一下比较</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-28, 06:43 PM</p> <p>现在问题妖了, 干净的电脑第一次访问是好的, 但是再次访问就会出现编码错误的乱码, 能否让flash每次都去读网上的而不直接访问本地的缓存</p> <hr />  <p>egoldy</p> <p>2007-08-28, 10:16 PM</p> <p>在载入asp脚本的时候,给服务器多施加一些压力.比如 some.asp?random=&quot;webstudio&quot;;  而实际上所传递的random是不存的,也不会有webstudio这个值,这样就会向服务不断发送请求,可以保证你的asp总是网上最新的.</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-30, 11:38 AM</p> <p>感谢各位老大,问题全部解决了, xml的asp输出要规范最好不要用’来代替&quot; . <br />System.useCodepage=true 我都删除了,  一加这句话就乱码, 加载动态生成的内容就如egoldy说的那样给服务器点压力,我用Math.random()来给他施加压力 :o</p> <hr />  <p>乖乖</p> <p>2007-08-30, 11:52 AM</p> <p>其实给熊猫个建议，UTF8格式是趋势，因为多国语言化最好的还是UTF格式，显示各国字符都可以，所以建议你写XML时使用UTF-8格式  <br />在ASP的开头加上 <br />&lt;%@ CodePage=&quot;65001&quot; %&gt;  <br />标志该ASP文件以UTF-8编码，然后把ASP用记事本另存为UTF-8格式  <br />同时在FLASH里面把System.useCodepage=true删除，指示FLASH以UTF-8编码解析XML  <br />要防止ASP的缓存除了鹰老大所说的&ldquo;施加压力&rdquo;外，使用Response.Expires =  -1使ASP产生的XML生存期为无效，也是可行的，你可以试试。 <br />还有就是XML的书写规范也要考虑。 :)</p> <hr />  <p>扁头大熊猫</p> <p>2007-08-30, 01:24 PM</p> <p>对啊， 我都用了utf-8的， 乱码问题主要是asp的原因，除了要加你说的那些外最好还要加上 <br />&lt;% Response.ContentType  = &quot;text/xml&quot; %&gt; <br />&lt;% Response.charset = &quot;utf-8&quot; %&gt;</p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/168.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=168</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=168&amp;key=eca52921</trackback:ping></item><item><title>Flex Flash Object.registerClass()</title><author>camnpr@163.com (camnpr)</author><link>http://camnpr.com/flash-air/163.html</link><pubDate>Thu, 06 Jan 2011 10:48:13 +0800</pubDate><guid>http://camnpr.com/flash-air/163.html</guid><description><![CDATA[<p><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;" class="Apple-style-span"><span style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;" class="Apple-style-span"><h1 style="font-size: 15px; margin-top: 0em; margin-bottom: 0.7em;">Object.registerClass()</h1><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">可用性</h4><p style="margin-top: 0.6em; margin-bottom: 0.6em;">Flash Player 6。如果您使用的是外部类文件，则可以使用&ldquo;链接属性&rdquo;或&ldquo;元件属性&rdquo;对话框中的&ldquo;动作脚本&nbsp;2.0 类&rdquo;字段将一个对象与一个类关联，而不是使用此方法。</p><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">用法</h4><pre style="margin-top: 0.6em; margin-bottom: 0.6em; font-family: ’Courier New’,Courier,mono; font-size: 12px;">Object.registerClass(<code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>symbolID</em></code>, <code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>theClass</em></code>)<br/></pre><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">参数</h4><p style="margin-top: 0.6em; margin-bottom: 0.6em;"><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>symbolID</em></code>&nbsp;影片剪辑元件的链接标识符，或动作脚本类的字符串标识符。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;"><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>theClass</em></code>&nbsp;指向动作脚本类的构造函数的引用，如果为<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">null</code>，则取消注册元件。</p><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">返回</h4><p style="margin-top: 0.6em; margin-bottom: 0.6em;">如果类注册成功，则返回值为<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">true</code>；否则，返回<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">false</code>。</p><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">说明</h4><p style="margin-top: 0.6em; margin-bottom: 0.6em;">方法；将影片剪辑元件与动作脚本对象类相关联。如果元件不存在，则 Flash 在字符串标识符和对象类之间创建关联关系。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">时间轴放置指定影片剪辑元件的实例时，该实例注册到由<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>theClass</em></code><span class="Apple-converted-space">&nbsp;</span>参数指定的类，而不是注册到 MovieClip 类。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">使用<span class="Apple-converted-space">&nbsp;</span><a style="color: rgb(0, 102, 153);" href="http://www.weste.net/book/actionscript2/index_web/12_ASD376.html#146872">MovieClip.attachMovie()</a><span class="Apple-converted-space">&nbsp;</span>或<span class="Apple-converted-space">&nbsp;</span><a style="color: rgb(0, 102, 153);" href="http://www.weste.net/book/actionscript2/index_web/12_ASD385.html#147265">MovieClip.duplicateMovieClip()</a><span class="Apple-converted-space">&nbsp;</span>创建指定影片剪辑元件的实例时，该实例注册到由<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>theClass</em></code><span class="Apple-converted-space">&nbsp;</span>指定的类，而不是注册到 MovieClip 类。如果<span class="Apple-converted-space">&nbsp;</span><br /><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;"><em>theClass</em></code><span class="Apple-converted-space">&nbsp;</span>为<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">null</code>，则此方法删除任何与指定影片剪辑元件或类标识符相关联的动作脚本类定义。对于影片剪辑元件，该影片剪辑的任何现有实例保持不变，但此元件的新实例将与默认类 MovieClip 相关联。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">如果元件已注册到某个类，则此方法用新注册将其替换。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">如果影片剪辑实例是由时间轴放置或使用<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">attachMovie()</code><span class="Apple-converted-space">&nbsp;</span>或<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">duplicateMovieClip()</code><span class="Apple-converted-space">&nbsp;</span>创建的，则动作脚本使用指向此对象的关键字<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">this</code><span class="Apple-converted-space">&nbsp;</span>调用适当类的构造函数。此构造函数在调用时不带有参数。</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">如果使用此方法将影片剪辑注册到动作脚本类而不是 MovieClip，则该影片剪辑元件不继承内置 MovieClip 类的方法、属性和事件，除非将 MovieClip 类包括在新类的原型链中。下面的代码创建一个新的名为<span class="Apple-converted-space">&nbsp;</span><code style="font-family: ’Courier New’,Courier,mono; font-size: 12px;">theClass</code><span class="Apple-converted-space">&nbsp;</span>的 ActionScript 类，它继承了 MovieClip 类的属性：</p><pre style="margin-top: 0.6em; margin-bottom: 0.6em; font-family: ’Courier New’,Courier,mono; font-size: 12px;">theClass.prototype = new MovieClip();<br/></pre><h4 style="font-size: 12px; font-weight: bold; margin-top: 1.2em; margin-bottom: 0.6em;">另请参见</h4><p style="margin-top: 0.6em; margin-bottom: 0.6em;"><a style="color: rgb(0, 102, 153);" href="http://www.weste.net/book/actionscript2/index_web/12_ASD376.html#146872">MovieClip.attachMovie()</a>、<a style="color: rgb(0, 102, 153);" href="http://www.weste.net/book/actionscript2/index_web/12_ASD385.html#147265">MovieClip.duplicateMovieClip()</a></p><p style="margin-top: 0.6em; margin-bottom: 0.6em;">&nbsp;</p><p style="margin-top: 0.6em; margin-bottom: 0.6em;"><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;" class="Apple-style-span"><span style="font-family: verdana,sans-serif; font-size: 14px; line-height: 21px; text-align: left;" class="Apple-style-span"><p style="padding: 0px; margin: 1em 0px 0.5em;"><strong>示例</strong></p><p style="padding: 0px; margin: 1em 0px 0.5em;">此示例为标准复选框 UI 小部件创建组件。</p><p style="padding: 0px; margin: 1em 0px 0.5em;">首先在库中创建一个名为 Check Box 的影片剪辑元件。然后在动作脚本中创建一个表示复选框的 CheckBox 类。</p><pre>// Define constructor for (and thus define) <br/>	CheckBox class<br/><br/>function CheckBox() {<br/>...<br/>}<br/><br/>// Set CheckBox prototype chain <br/>	to inherit from MovieClip<br/><br/>CheckBox.prototype = new MovieClip();<br/><br/>// Define methods for the CheckBox class<br/><br/>CheckBox.prototype.setLabel = function (newLabel) {<br/>	this.label = newLabel;<br/>	...<br/>};<br/>CheckBox.prototype.setValue = function (newValue) {<br/>	this.value = value;<br/>	...<br/>};<br/>CheckBox.prototype.getValue = function () {<br/>	return this.value;<br/>};<br/>CheckBox.prototype.getLabel = function () {<br/>	return this.label;<br/>};</pre><p style="padding: 0px; margin: 1em 0px 0.5em;">现在必须将 CheckBox 类与 Check Box 影片剪辑元件关联起来。首先，需要能够用动作脚本标识 Check Box 影片剪辑元件。为此，请在库中的&ldquo;链接&rdquo;对话框中输入一个标识符，然后选中&ldquo;为动作脚本导出&rdquo;。</p><p style="padding: 0px; margin: 1em 0px 0.5em;">其次，编写动作脚本将 CheckBox 类与 CheckBox 元件相关联：</p><pre>Object.registerClass(&quot;CheckBox&quot; /*symbolID*/, CheckBox /*theClass*/ );</pre><p style="padding: 0px; margin: 1em 0px 0.5em;">用法 1（时间轴放置）：现在可以使用创作工具将<span class="Apple-converted-space">&nbsp;</span><code style="font-style: normal;">CheckBox</code><span class="Apple-converted-space">&nbsp;</span>实例放置在舞台上，这样在运行时此实例将自动接收动作脚本类 CheckBox。如果放置两个实例<span class="Apple-converted-space">&nbsp;</span><code style="font-style: normal;">myCheckBox1</code><span class="Apple-converted-space">&nbsp;</span>和<span class="Apple-converted-space">&nbsp;</span><code style="font-style: normal;">myCheckBox2</code>，则可以通过调用方法来控制它们，如下所示：</p><pre>myCheckBox1.setValue(true);<br/>myCheckBox2.setValue(false);<br/>myCheckBox2.setLabel(&quot;new label for #2&quot;);</pre><p style="padding: 0px; margin: 1em 0px 0.5em;">用法 2（动态实例）：可以在播放影片时，使用<span class="Apple-converted-space">&nbsp;</span><code style="font-style: normal;">attachMovie</code><span class="Apple-converted-space">&nbsp;</span>方法在舞台上创建复选框的新实例。因为 CheckBox 元件被注册到动作脚本类 CheckBox，所以新的动态实例将自动接收这个类。</p><pre>// createCheckBox is a helper function that<br/>// dynamically creates CheckBoxes<br/>function createCheckBox(name, depth) {<br/>	attachMovie(&quot;CheckBox&quot;, name, depth);<br/>}<br/>createCheckBox(&quot;myCheckBox3&quot;, 100);<br/>myCheckBox3.setValue(false);<br/>myCheckBox3.setLabel(&quot;new label for #3&quot;);</pre></span></span></p></span></span></p>]]></description><category>Flash_Flex_AIR</category><comments>http://camnpr.com/flash-air/163.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=163</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=163&amp;key=19bd50a0</trackback:ping></item></channel></rss>
