﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java &amp;&amp; Flex-文章分类-FMS</title><link>http://www.blogjava.net/sl2cj/category/11634.html</link><description>&lt;br&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp----&gt;乞怪猪blog搬家了--[www.ialway.com/blog]--希望继续关注!谢谢!^0^</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 05:52:59 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 05:52:59 GMT</pubDate><ttl>60</ttl><item><title>【转帖】实现了视频私聊功能 </title><link>http://www.blogjava.net/sl2cj/articles/55996.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Fri, 30 Jun 2006 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/55996.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/55996.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/55996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/55996.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/55996.html</trackback:ping><description><![CDATA[
		<strong>【转帖】实现了视频私聊功能</strong>
		<!-- vB 中文修改开始: 显示声望 -->
		<!-- vB 中文修改结束 -->
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_1327" style="OVERFLOW-X: hidden">昨天匆忙实现了视频私聊功能，今天把思路再整理下。顺便和各位做个探讨～<br />我的基本思路是这样的：<br />1. 用户登录<span class="highlight"><strong><font color="#ff0000">聊天室</font></strong></span>后在左边的窗口自动显示视频（如果检测到有的话，如果没有则显示相关文字或图片，这个暂时还没有加）；<br />2. 点击用户列表中的相应用户名后取得对应的视频文件名，然后在右边的窗口播放就可以了。<br />看起来简单，其实不然哦～下面看详细的分析<br />注意：下面所有修改都是基于FlashCom 组件，相关的组件实现就不再详细叙述。只是摘取视频私聊相关部分分析。<br />关于自动开启视频的代码修改：<br />在av组件中的connect方法中添加<br />1 : //av1_mc 是左边视频窗口的实例名称<br />2 : if (this.name=='av1_mc') this.startPublish();<br />这个比较容易实现，关键是私聊用户的视频显示。<br />因为AVPresence组件的视频发布是this.prefix + this.soName<br />1 : this.ns.publish(this.prefix + this.soName);<br />也就是说是以窗口的实例名来定位播放的，要修改为针对用户定位播放的方式，因此以上代码改为<br />1 : this.ns.publish(this.userID);<br />这样就是以用户ID为文件名发布视频文件，以便于我们下一步选择不同的用户来播放相应的视频。<br />下一步，是修改接收视频部分。<br />原先接收的方式是当前窗口接收，代码为：<br />1 : // Starts receiving a stream from another user<br />2 : FCAVPresenceClass.prototype.startReceive = function() { <br />3 : // trace('Start Receiving');<br />4 : this.seat_video.attachVideo(this.ns);<br />5 : this.ns.play(this.prefix + this.soName);<br />6 : this.gotoAndStop('receiving');<br />7 : this.onStartReceive();<br />8 : };<br />现在要改为指定播放窗口接收视频（这里就是右边的窗口了），而且要指明接收哪个用户的，所以加传递用户ID参数，代码改为：<br />1 : FCAVPresenceClass.prototype.startReceive = function(userId) { <br />2 : if (userId !=this.userID){ //如果选择自己，则不再接收<br />3 : this.seat_video.attachVideo(this.ns);<br />4 : this.ns.play(userId);<br />5 : this.gotoAndStop('receiving'); }<br />6 : };<br />接着要修改同步的部分，否则一旦视频同步就会乱了。下面是修改后的代码，比较下就知道了。<br />01 : this.so.onSync = function(list) { <br />02 : for (i in list) { <br />03 : userID[this.data.speaker]=this.data.speakerID;//把用户ID保存到数组<br />04 : if (list[ i ].name == 'broadcast') { <br />05 : if (this.data.broadcast &amp;&amp; this.data.speakerID!=this.userID &amp;&amp; this.data.speakerID == this.selectUserID) { <br />06 : this.owner.startReceive(this.data.speakerID);<br />07 : this.owner.username_txt.text = this.data.speaker;<br />08 : } else { <br />09 : this.owner.stopReceive();<br />10 : this.owner.level.mask._height = 1;<br />11 : this.owner.username_txt.text = '(Open)';<br />12 : // Stop<br />13 : }<br />14 : }<br />15 : }<br />16 : };其中selectUserID就是我们点击用户列表后获取到的值，要能够获取到这个值首先要在peopleList组件中保存用户信息，在组件onchange事件触发的时候可以获取到用户名。<br />我在用户列表的value中保存了很多信息，下面是peopleList组件的同步时候添加List数据代码<br />1 : this.owner.people_lb.addItem(this.data[ i ].name,{ id:i,sex:this.data[ i ].sex,name:this.data[ i ].name,ip:this.data[ i ].ip,cam:this.data[ i ].cam,mic:this.data[ i ].mic });<br />这些用户信息是通过共享对象存储在服务器端的<br />下面是服务器端people.asc文件中的相关实现<br />1 : FCPeopleList.prototype.connect = function( client,userSex,cam,mic ) { <br />2 : var cglobal = this.getClientGlobalStorage(client);<br />3 : var clocal = this.getClientLocalStorage(client);<br />4 : clocal.id = 'u' + this.getClientID(client);<br />5 : userName=cglobal.username == null ? ' fc_lurker' : cglobal.username;<br />6 : this.users_so.setProperty(clocal.id, { name:userName, cam:cam,mic:mic,sex:userSex,ip:client.ip });<br />7 : }<br />最后要做的就是点击用户列表中的名称后显示相应的视频了<br />在onchange事件中写入下面代码就可以了：<br />1 : //av2_mc 是右边窗口的实例名称<br />2 : av2_mc.username_txt.text = this.getValue().name;<br />3 : av2_mc.selectUserId = userID[this.getValue().name];<br />4 : av2_mc.startReceive(userID[this.getValue().name]);<br />以上简要说明了基于FlashCom组件实现私聊的方法，分析的不是很周全，难免存在些Bug～只是作些交流，本人也会不断完善</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/55996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-30 17:11 <a href="http://www.blogjava.net/sl2cj/articles/55996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [FCS]Server端与Client端method触发与data广播概念 </title><link>http://www.blogjava.net/sl2cj/articles/54478.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 22 Jun 2006 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/54478.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/54478.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/54478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/54478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/54478.html</trackback:ping><description><![CDATA[ <strong>[FCS]Server端与Client端method触发与data广播概念</strong><!-- vB 中文修改开始: 显示声望 --><!-- vB 中文修改结束 --><hr style="COLOR: #fff" size="1" /><!-- / icon and title --><!-- message --><div id="post_message_503" style="OVERFLOW-X: hidden"><div align="left"><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">FCS</font></font><font color="#333333"><font face="宋体">的应用上常会需要让</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">与</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">间的数据传递与</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">呼叫，以下几点概念应该可以</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">避免呼叫</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">没反应或数据没传到你要的地方等状况发生。</font></font><br /><br /><font color="red"><font face="宋体">一</font></font><font color="red"><font face="PMingLiU">.Server</font></font><font color="red"><font face="宋体">端</font></font><font color="red"><font face="PMingLiU">method</font></font><font color="red"><font face="宋体">如何被呼叫</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上要能让</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">所呼叫触发的</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">，需定义在</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端的</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">对象上你可以用</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">prototype</font></font><font color="#333333"><font face="宋体">方式去</font></font><font color="#333333"><font face="PMingLiU">extend</font></font><font color="#333333"><font face="宋体">原本</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">类别的</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">，让</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">类别所产生的</font></font><font color="#333333"><font face="PMingLiU">instance</font></font><font color="#333333"><font face="宋体">都拥有该</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Client.prototype.newfun=function(){}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">你也可以把这</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">定义在单一</font></font><font color="#333333"><font face="PMingLiU">Client instance</font></font><font color="#333333"><font face="宋体">下，</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onConnect(newClient)=function(){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">.....</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">newClient.newfun=function(){}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="red"><font face="宋体">二</font></font><font color="red"><font face="PMingLiU">.Client</font></font><font color="red"><font face="宋体">端的</font></font><font color="red"><font face="PMingLiU">method</font></font><font color="red"><font face="宋体">如何被呼叫</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端上要让</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端可以呼叫的</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">，一定要定义在</font></font><font color="#333333"><font face="PMingLiU">Netconnection</font></font><font color="#333333"><font face="宋体">上。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">nc=new NetConnection();</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">.....</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">nc.myfun=function(){}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="red"><font face="宋体">三</font></font><font color="red"><font face="PMingLiU">.send</font></font><font color="red"><font face="宋体">或</font></font><font color="red"><font face="PMingLiU">call</font></font><font color="red"><font face="宋体">这两个</font></font><font color="red"><font face="PMingLiU">method</font></font><font color="red"><font face="宋体">在使用上有何差异</font></font><font color="red"><font face="PMingLiU">?</font></font><font color="red"><font face="宋体">如何使用</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">call:</font></font><font color="#333333"><font face="宋体">这</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端上可使用的是</font></font><font color="#333333"><font face="PMingLiU">netconnection</font></font><font color="#333333"><font face="宋体">对象，在</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上可使用的是</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">netconnection</font></font><font color="#333333"><font face="宋体">与</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">物件</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">1.</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端利用</font></font><font color="#333333"><font face="PMingLiU">netconnection.call</font></font><font color="#333333"><font face="宋体">来触发执行</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上</font></font><font color="#333333"><font face="PMingLiU">Client </font></font><font color="#333333"><font face="宋体">对象的</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">2.</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上利用</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">对象</font></font><font color="#333333"><font face="PMingLiU">.call</font></font><font color="#333333"><font face="宋体">来触发</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端上</font></font><font color="#333333"><font face="PMingLiU">netconnection</font></font><font color="#333333"><font face="宋体">上的</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">3.</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上使用</font></font><font color="#333333"><font face="PMingLiU">netconnection.call</font></font><font color="#333333"><font face="宋体">时，这时这</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">的角色就像一个</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">端一样</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">，是在触发另一个</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端上</font></font><font color="#333333"><font face="PMingLiU">Client </font></font><font color="#333333"><font face="宋体">物件的</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">send:</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端上可使用这</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">的包含</font></font><font color="#333333"><font face="PMingLiU">SharedObject</font></font><font color="#333333"><font face="宋体">与</font></font><font color="#333333"><font face="PMingLiU">netStream</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">send</font></font><font color="#333333"><font face="宋体">这个</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">很有趣，他让你由</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">端去启动所有同在</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">端的</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">，但因为</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">在触发</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">时可以带参数过去，这个特性是可以让你利用来做小量数据的广播的，要</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">广播给所有人接收到的数据，并不一定就要放在</font></font><font color="#333333"><font face="PMingLiU">SharedObject</font></font><font color="#333333"><font face="宋体">内，利用其</font></font><font color="#333333"><font face="PMingLiU">onSync</font></font><font color="#333333"><font face="宋体">来做同步</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">，有时用</font></font><font color="#333333"><font face="PMingLiU">send</font></font><font color="#333333"><font face="宋体">也是一个很简单的做法，如何定义</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">1.</font></font><font color="#333333"><font face="宋体">在</font></font><font color="#333333"><font face="PMingLiU">netStream</font></font><font color="#333333"><font face="宋体">或</font></font><font color="#333333"><font face="PMingLiU">SharedObject</font></font><font color="#333333"><font face="宋体">上定义好</font></font><font color="#333333"><font face="PMingLiU">method "myfun"</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">2.</font></font><font color="#333333"><font face="宋体">利用</font></font><font color="#333333"><font face="PMingLiU">netStream.send("myfun")</font></font><font color="#333333"><font face="宋体">或</font></font><font color="#333333"><font face="PMingLiU">sharedobject.send("myfun"</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">myvar)</font></font><font color="#333333"><font face="宋体">可让所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">上的</font></font><font color="#333333"><font face="PMingLiU">"myfun"</font></font><font color="#333333"><font face="宋体">都会被触发</font></font><br /><br /><font color="red"><font face="宋体">四</font></font><font color="red"><font face="PMingLiU">.</font></font><font color="red"><font face="宋体">几种可能的互动型态范例</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="red"><font face="PMingLiU">1.Client</font></font><font color="red"><font face="宋体">端对</font></font><font color="red"><font face="PMingLiU">Server</font></font><font color="red"><font face="宋体">端传送</font></font><font color="red"><font face="PMingLiU">data</font></font><font color="red"><font face="宋体">或呼叫执行</font></font><font color="red"><font face="PMingLiU">Server</font></font><font color="red"><font face="宋体">端</font></font><font color="red"><font face="PMingLiU">function</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">应用范例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">一个简易聊天室，聊天内容只存在</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端的变量内，不使用</font></font><font color="#333333"><font face="PMingLiU">SharedObject</font></font><font color="#333333"><font face="宋体">存放呼</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">叫</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端的</font></font><font color="#333333"><font face="PMingLiU">message</font></font><font color="#333333"><font face="宋体">这</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="宋体">来处理</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">传上去的</font></font><font color="#333333"><font face="PMingLiU">msg</font></font><font color="#333333"><font face="宋体">这对话内容</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">nc.call("message"</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU"> null</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU"> msg);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onAppstart=function(){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.chat_content="";</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onConnect=function(newClient){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">.......</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">newClient.message=function(msg){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.chat_content+=msg;</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">} </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="red"><font face="PMingLiU">2.Client</font></font><font color="red"><font face="宋体">端对所有</font></font><font color="red"><font face="PMingLiU">Client</font></font><font color="red"><font face="宋体">广播</font></font><font color="red"><font face="PMingLiU">data</font></font><font color="red"><font face="宋体">并执行指定</font></font><font color="red"><font face="PMingLiU">Client</font></font><font color="red"><font face="宋体">端</font></font><font color="red"><font face="PMingLiU">function</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">应用范例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">以之前在站上回复过的问题为例，一个</font></font><font color="#333333"><font face="PMingLiU">clinet</font></font><font color="#333333"><font face="宋体">要输入一个网址</font></font><font color="#333333"><font face="PMingLiU">url_txt</font></font><font color="#333333"><font face="宋体">，要让所有的</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">都会开启这网址的网页</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">先定义一个附挂在</font></font><font color="#333333"><font face="PMingLiU">so</font></font><font color="#333333"><font face="宋体">上的</font></font><font color="#333333"><font face="PMingLiU">method</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">lobby_so.openPage=function(receive_url){ </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">getURL(receive_url);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">利用</font></font><font color="#333333"><font face="PMingLiU">send</font></font><font color="#333333"><font face="宋体">就可让所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">接收到这网址并开启</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">lobby_so.send("openPage"</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">url_txt); </font></font><br /><br /><font color="red"><font face="PMingLiU">3.Server</font></font><font color="red"><font face="宋体">传送</font></font><font color="red"><font face="PMingLiU">data</font></font><font color="red"><font face="宋体">给特定</font></font><font color="red"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">应用范例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">当有使用者联机上</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">，当使用者数据验证正确时，接受其联机，一方面要</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">去执行指定的</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">跳到某页或让某</font></font><font color="#333333"><font face="PMingLiU">mc</font></font><font color="#333333"><font face="宋体">出现</font></font><font color="#333333"><font face="PMingLiU">...</font></font><font color="#333333"><font face="宋体">，同时又要把</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">端的数据带过去</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">说明</font></font><font color="#333333"><font face="PMingLiU">:server</font></font><font color="#333333"><font face="宋体">只响应正在与</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">做互动的那个</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">，如以上范例，</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">只会去触发请求</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">联机的该</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">去执行指定的</font></font><font color="#333333"><font face="PMingLiU">function</font></font><font color="#333333"><font face="宋体">，其它</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">不会有反应</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">: </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onConnect=function(newClient</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">pwd){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">if(pwd=="ok"){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.acceptConnection(newClient);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">newClient.call("get_message"</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">null</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">message); </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}else{</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.rejectConnection(newClient</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">errObj);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">} </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">........</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">nc.get_message=function(message){}; </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="red"><font face="PMingLiU">4.Server</font></font><font color="red"><font face="宋体">广播</font></font><font color="red"><font face="PMingLiU">data</font></font><font color="red"><font face="宋体">给所有</font></font><font color="red"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">应用范例</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">当有人断线时，由</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">端广播所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">，让所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">都能同步更新</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">名单</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">说明</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">以上范例来说，当</font></font><font color="#333333"><font face="PMingLiU">clinet</font></font><font color="#333333"><font face="宋体">无预警的断线，只有</font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">上的</font></font><font color="#333333"><font face="PMingLiU">application.onDisconnect </font></font><font color="#333333"><font face="宋体">这</font></font><font color="#333333"><font face="PMingLiU">handler</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">会被触发，也就是说你需要在这</font></font><font color="#333333"><font face="PMingLiU">handler</font></font><font color="#333333"><font face="宋体">内写一些程序去广播通知给所有的</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">如何广播</font></font><font color="#333333"><font face="PMingLiU">?</font></font><font color="#333333"><font face="宋体">有以下两种做法</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">1.</font></font><font color="#333333"><font face="宋体">把数据放在</font></font><font color="#333333"><font face="PMingLiU">remote SharedObject</font></font><font color="#333333"><font face="宋体">对象内，只要</font></font><font color="#333333"><font face="PMingLiU">SO</font></font><font color="#333333"><font face="宋体">对象内容更动，即自动触发</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端的</font></font><font color="#333333"><font face="PMingLiU">so.onSync</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">将在线人员名单写在</font></font><font color="#333333"><font face="PMingLiU">remote SharedObject</font></font><font color="#333333"><font face="宋体">对象内，当有人断线，只要把</font></font><font color="#333333"><font face="PMingLiU">so</font></font><font color="#333333"><font face="宋体">内该笔数据剔除掉，因为</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">so</font></font><font color="#333333"><font face="宋体">内容改变，因此所有</font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端的</font></font><font color="#333333"><font face="PMingLiU">so.onSync </font></font><font color="#333333"><font face="宋体">这</font></font><font color="#333333"><font face="PMingLiU">handler</font></font><font color="#333333"><font face="宋体">将被触发，即可达到你要更新数据的目的。</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Server</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onDisconnect=function(newClient){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">userlist_so.setProperty(newClient.name</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">"");</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">注</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="宋体">相对的当</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">端无预警的断线，</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">端可由</font></font><font color="#333333"><font face="PMingLiU">nc.onStatus</font></font><font color="#333333"><font face="宋体">这</font></font><font color="#333333"><font face="PMingLiU">handler</font></font><font color="#333333"><font face="宋体">内由判断</font></font><font color="#333333"><font face="PMingLiU">info.code</font></font><font color="#333333"><font face="宋体">来取</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">得信息</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">2.</font></font><font color="#333333"><font face="宋体">当数据不是存在</font></font><font color="#333333"><font face="PMingLiU">so</font></font><font color="#333333"><font face="宋体">内时，只是存在</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">端的一个变量上，可以善加利用</font></font><font color="#333333"><font face="PMingLiU">application.clients</font></font><font color="#333333"><font face="宋体">来对</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="宋体">所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">广播。以下会触发所有</font></font><font color="#333333"><font face="PMingLiU">client</font></font><font color="#333333"><font face="宋体">端上的</font></font><font color="#333333"><font face="PMingLiU">client_fun</font></font><font color="#333333"><font face="宋体">，并把</font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">上的</font></font><font color="#333333"><font face="PMingLiU">sendvar</font></font><font color="#333333"><font face="宋体">变量带过去</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">server</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.onDisconnect=function(newClient){</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">for(var i=0;i&lt;application.clients.length;i++) {</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.clients[i].call("client_fun"</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">null</font></font><font color="#333333"><font face="宋体">，</font></font><font color="#333333"><font face="PMingLiU">sendvar); </font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">}</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">Client</font></font><font color="#333333"><font face="宋体">端</font></font><font color="#333333"><font face="PMingLiU">:</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">nc.client_fun=function(myvar){ } </font></font><br /></div><br /><div align="left"><font color="#333333"><font face="宋体">增加一个广播的方法</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="Comic Sans MS">Server </font></font><font color="#333333"><font face="宋体">端传送给有</font></font><font color="#333333"><font face="Comic Sans MS">getRemote </font></font><font color="#333333"><font face="宋体">同一个</font></font><font color="#333333"><font face="Comic Sans MS">ShareObject </font></font><font color="#333333"><font face="宋体">的</font></font><font color="#333333"><font face="Comic Sans MS">Client </font></font><font color="#333333"><font face="宋体">端</font></font><br /><br /><font color="#333333"><font face="PMingLiU">Server </font></font><font color="#333333"><font face="宋体">端：</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.abc_so = SharedObject.get("abc_so", false);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">application.abc_so.send("msgFromSrvr", msg);</font></font><br /><br /><div align="left"><font color="#333333"><font face="PMingLiU">Client </font></font><font color="#333333"><font face="宋体">端：</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">abc_so = SharedObject.getRemote("abc_so", abc_nc.uri, false);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">abc_so.msgFromSrvr = function(msg) {</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">showMsg(msg);</font></font><font color="#333333"><font face="PMingLiU"><br /></font></font><font color="#333333"><font face="PMingLiU">};</font></font></div><br /><font color="#333333"><font face="宋体">说不上贡献，在</font></font><font color="#333333"><font face="PMingLiU">FCS</font></font><font color="#333333"><font face="宋体">提供的</font></font><font color="#333333"><font face="PMingLiU">help </font></font><font color="#333333"><font face="宋体">就有提到了</font></font><font color="#333333"><font face="PMingLiU">..</font></font></div></div><img src ="http://www.blogjava.net/sl2cj/aggbug/54478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-22 13:46 <a href="http://www.blogjava.net/sl2cj/articles/54478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【分享】关于编译FFMPEG的初级教程-原创 </title><link>http://www.blogjava.net/sl2cj/articles/54475.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 22 Jun 2006 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/54475.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/54475.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/54475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/54475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/54475.html</trackback:ping><description><![CDATA[
		<strong>【分享】关于编译FFMPEG的初级教程-原创</strong>
		<!-- vB 中文修改开始: 显示声望 -->
		<!-- vB 中文修改结束 -->
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_11963" style="OVERFLOW-X: hidden">
				<b>
						<font size="5">原文来自<a href="http://www.kelew.com/" target="_blank"><font color="#000000">http://www.kelew.com/</font></a></font>
				</b>
				<br />
				<br />关于编译FFMPEG的初级教程<br />1.首先我们要下载相关工具，这里不多说，大家按照我的地址去下载文件就好了<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />MINGW下载地址：<a href="http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download" target="_blank"><font color="#000000">http://prdownloads.sourceforge.net/m...1.exe?download</font></a><br />然后在下载MSYS ：<a href="http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download" target="_blank"><font color="#000000">http://prdownloads.sf.net/mingw/MSYS...0.exe?download</font></a><br />好先喝点咖啡，哈哈<br />首先我们先安装一下MINGW，我的目录是c:/MINGW，默认的，然后接下来要安装MSYS<br /><br />这里要有些注意，安装目录看到别人是这么说的，C:\MinGW\bin\1.0，意思就是安装在你的MINGW目录下的BIN里面<br /><br />OK，开始安装吧！注意安装完毕以后有个DOS界面，这里至关重要，请谨慎操作<br /><br />按照图片的操作即可，<br /><br /><img onmouseover="if(this.alt) this.style.cursor='pointer';" onclick="if(this.alt) window.open('http://www.kelew.com/p.gif');" alt="" src="http://www.kelew.com/p.gif" onload="if(this.width&gt;screen.width-300) {this.width=screen.width-300;this.alt='本图片已被缩小，点击查看原大小图片。';}" border="0" /><br /><br /><br />安装好以后，我们在下载一个LAME，我不知道是干嘛用的，反正就安装吧<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />下载地址：<a href="http://prdownloads.sourceforge.net/lame/lame-3.97b2.tar.gz?download" target="_blank"><font color="#000000">http://prdownloads.sourceforge.net/l...ar.gz?download</font></a><br />然后解压到C:\MinGW\bin\1.0\lame-3.97<br /><br />好了，启动桌面上的MSYS，然后出入一下代码<br />首先进入lame目录，呵呵<br />下面步骤<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />1.cd c:<br />2.cd MinGw<br />3.cd bin<br />4 cd 1.0<br />5.cd lame-3.97<br />然后开始编译，一下是步骤<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />1 ./configure（根据的你电脑速度决定快慢）<br />2. make<br />3. make install<br />好了，你可以下载FFMPEG文件进行编译了，哈哈<br />首先下载FFMPEG<br />然后解压到磁盘里面，同样使用MSYS进入该目录输入一下代码<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />./configure --enable-memalign-hack --enable-mingw32 --enable-mp3lame --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib<br />执行完毕以后，在输入<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />make<br />执行完毕以后，在输入<br /><br /><b>CODE:<br /><div align="right"><a href="http://bbs.chinavideo.org/viewthread.php?tid=232&amp;extra=page%3D1#" target="_blank"><font color="#000000">[Copy to clipboard]</font></a></div></b><br />make install<br />OK了吧：），如果存在问题，希望高手纠错阿</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/54475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-22 13:43 <a href="http://www.blogjava.net/sl2cj/articles/54475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 【推荐】编译RED5的教程 </title><link>http://www.blogjava.net/sl2cj/articles/54473.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 22 Jun 2006 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/54473.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/54473.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/54473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/54473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/54473.html</trackback:ping><description><![CDATA[
		<table class="tborder" id="post9044" style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="6" width="100%" align="center" border="0">
				<tbody>
						<tr valign="top">
								<td class="alt1" id="td_post_9044">
										<div class="smallfont">
												<strong>【推荐】编译RED5的教程</strong>
												<!-- vB 中文修改开始: 显示声望 -->
												<!-- vB 中文修改结束 -->
										</div>
										<hr style="COLOR: #fff" size="1" />
										<!-- / icon and title -->
										<!-- message -->
										<div id="post_message_9044" style="OVERFLOW-X: hidden">
												<a href="http://www.newviewnetworks.com/nvnhome/blog/client/media/20060326_checkout.htm" target="_blank">
														<font color="#800080">
																<u>在eclipse中用svn获取Red5源程序</u>
														</font>
												</a>
												<br />
												<a href="http://www.newviewnetworks.com/nvnhome/blog/client/media/20060326_02_cleanup.htm" target="_blank">
														<font color="#0000ff">
																<u>使用eclipse来过滤源文件列表,使之更可读</u>
														</font>
												</a>
												<br />
												<a href="http://www.newviewnetworks.com/nvnhome/blog/client/media/20060327_03_build.htm" target="_blank">
														<u>
																<font color="#800080">用ant来编译源程序,并运行red5 server </font>
														</u>
												</a>
												<br />
												<br />eclipse的SVN插件：<a href="http://subclipse.tigris.org/install.html" target="_blank"><u><font color="#0000ff">http://subclipse.tigris.or...</font></u></a></div>
										<!-- / message -->
								</td>
						</tr>
						<tr>
								<td class="alt2">
										<img class="inlineimg" title="watersound 当前离线" alt="watersound 当前离线" src="http://www.flashcom.com.cn/bbs/images/statusicon/user_offline.gif" border="0" />
										<a href="http://www.flashcom.com.cn/bbs/reputation.php?p=9044" rel="nofollow">
												<img class="inlineimg" title="添加 watersound 的声望" alt="添加 watersound 的声望" src="http://www.flashcom.com.cn/bbs/images/buttons/reputation.gif" border="0" />
										</a>
										<a href="http://www.flashcom.com.cn/bbs/report.php?p=9044" rel="nofollow">
												<img class="inlineimg" title="向版主反映此帖" alt="向版主反映此帖" src="http://www.flashcom.com.cn/bbs/images/buttons/report.gif" border="0" />
										</a>   </td>
								<td class="alt1" align="right">
										<!-- controls -->
										<!-- vB 中文修改开始: 银行 -->
										<!-- vB 中文修改结束 -->
										<a href="http://www.flashcom.com.cn/bbs/newreply.php?do=newreply&amp;p=9044" rel="nofollow">
												<img title="回复时引用此帖" alt="回复时引用此帖" src="http://www.flashcom.com.cn/bbs/images/buttons/quote.gif" border="0" />
										</a>
										<a id="qr_9044" href="http://www.flashcom.com.cn/bbs/newreply.php?do=newreply&amp;p=9044" rel="nofollow">
												<img title="快速回复此帖" alt="快速回复此帖" src="http://www.flashcom.com.cn/bbs/images/buttons/quickreply.gif" border="0" />
										</a>
										<!-- / controls -->
								</td>
						</tr>
				</tbody>
		</table>
		<!-- post 9044 popup menu -->
		<div class="vbmenu_popup" id="postmenu_9044_menu" style="DISPLAY: none">
				<table cellspacing="1" cellpadding="4" border="0">
						<tbody>
								<tr>
										<td class="thead">watersound</td>
								</tr>
								<tr>
										<td class="vbmenu_option">
												<a href="http://www.flashcom.com.cn/bbs/member.php?u=358">
														<font color="#333333">查看公开信息</font>
												</a>
										</td>
								</tr>
								<tr>
										<td class="vbmenu_option">
												<a href="http://www.flashcom.com.cn/bbs/private.php?do=newpm&amp;u=358" rel="nofollow">
														<font color="#333333">发悄悄话给 watersound</font>
												</a>
										</td>
								</tr>
								<tr>
										<td class="vbmenu_option">
												<a href="http://www.flashcom.com.cn/bbs/search.php?do=finduser&amp;u=358" rel="nofollow">
														<font color="#333333">查找 watersound 发表的更多帖子</font>
												</a>
										</td>
								</tr>
								<tr>
										<td class="vbmenu_option">
												<a href="http://www.flashcom.com.cn/bbs/profile.php?do=addlist&amp;userlist=buddy&amp;u=358">
														<font color="#333333">添加 watersound 到好友列表</font>
												</a>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
		<!-- / post 9044 popup menu -->
		<!-- / close content container -->
		<!-- / post #9044 -->
		<!-- post #9045 -->
		<!-- open content container -->
		<div align="center">
				<div class="page" style="WIDTH: 100%; TEXT-ALIGN: left">
						<div style="PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
								<div id="edit9045" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; PADDING-TOP: 0px">
										<!-- this is not the last post shown on the page -->
										<table class="tborder" id="post9045" style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="6" width="100%" align="center" border="0">
												<tbody>
														<tr>
																<td class="thead" style="FONT-WEIGHT: normal" width="175">
																		<!-- status icon and date -->
																		<a name="post9045">
																				<font color="#333333">
																						<img class="inlineimg" title="旧" alt="旧" src="http://www.flashcom.com.cn/bbs/images/statusicon/post_old.gif" border="0" />
																				</font>
																		</a> 2006-05-08, 12:06 PM <!-- / status icon and date --></td>
																<td class="thead" style="FONT-WEIGHT: normal" align="right">  #<a id="postcount9045" href="http://www.flashcom.com.cn/bbs/showpost.php?p=9045&amp;postcount=2" target="new" rel="nofollow" name="2"><strong>2</strong></a></td>
														</tr>
														<tr valign="top">
																<td class="alt2" width="175">
																		<div id="postmenu_9045" unselectable="true" state="false">
																				<a class="bigusername" href="http://www.flashcom.com.cn/bbs/member.php?u=358">
																						<strong>
																								<font color="#000000">watersound</font>
																						</strong>
																				</a>
																				<!-- vB 中文修改开始: 性别 -->
																				<!-- vB 中文修改结束 -->
																				<script type="text/javascript"><![CDATA[vbmenu_register("postmenu_9045", true); ]]&gt;</script>
																		</div>
																		<div class="smallfont">普通会员</div>
																		<div class="smallfont">
																				<img alt="" src="http://www.flashcom.com.cn/bbs/images/ranks/level2.gif" border="0" />
																		</div>
																		<div class="smallfont">
																				<br />
																				<div>注册日期: 05-12</div>
																				<div>帖子: 58 </div>
																				<!-- vB 中文修改开始: 精华 -->
																				<div>精华: 0</div>
																				<!-- vB 中文修改结束 -->
																				<!-- vB 中文修改开始: 银行 -->
																				<div>现金: 38 闪币</div>
																				<div>资产: 38 闪币</div>
																				<!-- vB 中文修改结束 -->
																				<!-- vB 中文修改开始: 显示声望 -->
																				<div>
																						<a href="http://www.flashcom.com.cn/bbs/reputation.php?p=9045" rel="nofollow">
																								<font color="#000000">声望</font>
																						</a>: 10 <img class="inlineimg" title="watersound 向着好的方向发展" alt="watersound 向着好的方向发展" src="http://www.flashcom.com.cn/bbs/images/reputation/reputation_pos.gif" border="0" /></div>
																				<!-- vB 中文修改结束 -->
																				<!-- vB 中文修改开始: QQ 插件 -->
																				<div>
																				</div>
																				<!-- vB 中文修改结束 -->
																		</div>
																</td>
																<td class="alt1" id="td_post_9045">
																		<!-- icon and title -->
																		<div class="smallfont">
																				<img class="inlineimg" title="默认" alt="默认" src="http://www.flashcom.com.cn/bbs/images/icons/icon1.gif" border="0" />
																				<strong>回复: 【推荐】编译RED5的教程</strong>
																				<!-- vB 中文修改开始: 显示声望 -->
																				<!-- vB 中文修改结束 -->
																		</div>
																		<hr style="COLOR: #fff" size="1" />
																		<!-- / icon and title -->
																		<!-- message -->
																		<div id="post_message_9045" style="OVERFLOW-X: hidden">RED5现在的最新版本为0.41<br />介绍:<a href="http://www.osflash.org/red5" target="_blank"><font color="#000000">http://www.osflash.org/red5</font></a><br />下载地址:<a href="http://www.osflash.org/red5/version.4.1_release" target="_blank"><font color="#000000">http://www.osflash.org/red5/version.4.1_release</font></a></div>
																</td>
														</tr>
												</tbody>
										</table>
								</div>
						</div>
				</div>
		</div>ghghghf<img src ="http://www.blogjava.net/sl2cj/aggbug/54473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-22 13:41 <a href="http://www.blogjava.net/sl2cj/articles/54473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原创】(扫盲)远程共享对象SharedObject的用法 </title><link>http://www.blogjava.net/sl2cj/articles/54472.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 22 Jun 2006 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/54472.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/54472.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/54472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/54472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/54472.html</trackback:ping><description><![CDATA[
		<strong>【原创】(扫盲)远程共享对象SharedObject的用法</strong>
		<!-- vB 中文修改开始: 显示声望 -->
		<!-- vB 中文修改结束 -->
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_777" style="OVERFLOW-X: hidden">学习fcs也有差不多一个月了,感觉最有特色的东西还是SharedObject.<br />今天就写个基本的教程关于它,第一次写教程(以前都是看教程-_-),手心都出汗了,心怕写得有错误导读者就惨了<img class="inlineimg" title="汗" alt="" src="http://www.flashcom.com.cn/bbs/images/smilies/sweat.gif" border="0" /> ,<br /><font color="red">斑竹有空看看,如果我的问题多就马上删掉,免得误了大家.或是这在这里指出来<br />有问题的话在帖中大家讨论,<br /></font>SharedObject有不少东西,本地操作就不说了(相信很多人没接触fcs也用过);就说说远程共享对象吧.<br />基本的应用流程是:<br /><font color="red">my_nc = new NetConnection();<br />my_nc.connect("rtmp:/app",变量1,变量2,...);<br />mySO=getRemote("mySO",my_nc.uri,false)<br />mySO.connect(my_nc);<br />mySO.onSync=function(info){ <br />}<br />mySO.data[property]=newValue<br /></font>//----------------------------------------------------------------------------------------------------------------<br /><br />下面解析一下:<br /><font color="red">my_nc = new NetConnection();<br />my_nc.connect("rtmp:/app",变量1,变量2,...);<br />mySO=getRemote("mySO",my_nc.uri,false)</font><br />// mySO:共享对象名字;<br />// my_nc.uri:共享对象共享连接到my_nc.uri的用户;<br />// false:还可以用true或空;英文解析是:<br />// 1. null or false :persistence not on the server<br />// 2. true: persistence on the server (not on the local);<br />// 3. A full or partial local path to the shared object<br />// persistence on the server and local<br />// 我也不大清楚这个意思,但我总结:false:当所有用户都停掉 <br />// 时 mySO清空;true: 不清空,<br /><br /><br /><font color="red">mySO.connect(my_nc);</font><br />//连接mySO到服务器<br /><font color="red">mySO.onSync=function(info){ <br />}</font><br />//mySO事件<br />改变它的值<font color="red">(一旦改变它的值就会触发onSync事件):</font><br /><font color="red">mySO.data[property]=newValue</font><br /><br />到这里就可以基本应用,当然如果你想在服务器也创建一个对应的mySO来也可以用<br /><font color="red">application.mySO = SharedObject.get("mySO", false);</font><br />但要注意的是在服务器里操作mySO的属性是要用<font color="red">setProperty</font>来改变,或是把一个对象作为它的属性,那么操作对象就不用用setProperty了.<br />//----------------------------------------------------------------------------------------------------------------<br /><br /><br />下面来重点说下mySO的事件:onSync<br /><br />SharedObject有两个事件:onStatus和onSync<br />两个基本上是一样的,但是有一点(不知道是不是这点使得大家不用onStatus):onStatus对新值和旧值相同时是不会触发这个事件的,<br />而onSync却不管是否相同都会触发;<br />先看一个例子:<br /><font color="red">my_So.onSync = function(info) {<br />for (name in info) {<br />trace("[sync] Reading Array Object #"+name+" code ("+info[name].code+","+info[name].name+")");<br />switch (info[name].code) {<br />case "change" :<br />var property = info[name].name;<br />var newValue = this.data[property];<br />_root[property+"_in"].text = newValue;<br />break;<br />case "success" :<br />break;<br />case "reject" :<br />break;<br />case "clear" :<br />break;<br />case "delete" :<br />break;<br />trace("data is updated");<br />}<br />}<br />};<br /></font><br /><font color="black">操作:</font><br /><font color="red">mySO.data[mytxt]=50</font><br /><br /><font color="red"><font color="black">//----------------------------------------------------------------------------------------------------------------------</font><br /></font><br /><br />干脆就在上面注析吧:<br /><font color="red">my_So.onSync = function(info) {<br /></font>//info:事件onSync触发的返回信息, 是个一维数组,两个属性(code,name)<br /><font color="red">for (name in info) {<br /></font>//name:变化的属性名,这个是一个遍历,看看在这次事件中有哪些属性改变了,(常常只有一个属性改变)<br /><font color="red">trace("info[name].code:"+info[name].code+" info[name].name: "+info[name].name);<br /></font>//输出info[name].code:相对于本客户端的事件类型:如下的switch;<br />//输出info[name].name:属性名字<br /><font color="red">switch (info[name].code) {<br />case "change" :<br /></font>//当事件类型是"改变"时,基本就是在这里广播事件的,其它的每个客户都执行这里的语句<br /><font color="red">var _property = info[name].name;<br />var _newValue = this.data[_property];<br />_root[_property].text = _newValue;<br />break;<br />case "success" :<br /></font>//当事件类型是"成功"时:注意:当本客户端上改动触发自已是"成功";而其它客户端则是"改变";<br /><font color="red">break;<br />case "reject" :<br /></font>//当事件类型是"修改不成功"时:<br /><font color="red">break;<br />case "clear" :<br /></font>//这个用得比较少,不是很清楚,根据英语的意思自已也不是很理解:<br />//This value is received by a Flash player that connected to a SharedObject for the first time.<br />//Clear is also sent if the server and client data are so far out of sync that the client dumps <br />its version of the SharedObject and resynchronizes itself completely.<br /><font color="red">break;<br />case "delete" :<br /></font>//当mySO给delete掉时<br /><font color="red">break;<br />trace("data is updated");<br />}<br />}<br />}<br /></font>//----------------------------------------------------------------------------------------------------------------<br />说到my_SO不得不提的是my_SO.send()这个函数(我很喜欢用),它也是类似onSync的广播事件的用途.这个很好用.<br />用法:<br /><font color="red">mySO.send("toggleBall", 变量1, 变量2...);</font><br />对应在client或是server端的mySO属性函数:<br /><font color="red">mySO.toggleBall=function( 变量1, 变量2..){</font><br />这个函数在其它所有的客户端执行,就像onSync一样的效果<br /><font color="red">}</font></div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/54472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-22 13:36 <a href="http://www.blogjava.net/sl2cj/articles/54472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 【求助】FMS上FLV文件合并的问题 </title><link>http://www.blogjava.net/sl2cj/articles/54471.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 22 Jun 2006 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/54471.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/54471.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/54471.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/54471.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/54471.html</trackback:ping><description><![CDATA[
		<div class="smallfont">
				<img class="inlineimg" title="默认" alt="默认" src="http://www.flashcom.com.cn/bbs/images/icons/icon1.gif" border="0" />
				<strong>【求助】FMS上FLV文件合并的问题</strong>
				<!-- vB 中文修改开始: 显示声望 -->
				<!-- vB 中文修改结束 -->
		</div>
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_12971" style="OVERFLOW-X: hidden">现在我的FMS服务器上有一些FLV文件，我想做一个批处理程序，把这些文件跟自己的一个FLV文件合并，这是在网上找的合并方法。不过，我是刚接触FMS和AS语言的。完全搞不清方向，不知道如何下手，连代码往哪写都不清楚。。。谁能说说大概的步骤就行了，这里我先谢谢了。<br />===================================================<br />用SSAS合成FLV <br />使用SSAS把两个或多个FLV文件合成一个FLV,可以控制FLV的长度,SSAS写法如下: <br /><br />//先得到一个流 <br />myStream = Stream.get("TIGER");)//注:TIGER是一个不存在的FLV,不可以写入扩展名" <br />//IF一下得到的流是否可以用 <br />if (myStream){ <br />myStream.play("video_1", -1, 10, true);//video_1是一个已存在的FLV文件 <br />myStream.play("video_2", -1, -1, true);//video_2是一个已存在的FLV文件 <br />myStream.record();//写入一个新文件,文件名是"TIGER"; <br />} </div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/54471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-22 13:32 <a href="http://www.blogjava.net/sl2cj/articles/54471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash Communication Server(FCS) FAQ</title><link>http://www.blogjava.net/sl2cj/articles/53898.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 20 Jun 2006 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/53898.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/53898.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/53898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/53898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/53898.html</trackback:ping><description><![CDATA[
		<h3 class="bTitle">Flash Communication Server(FCS) FAQ</h3>
		<div class="bText">
				<p>使用Flash Communication Server也有一段时间了，把一些常见的问题列出，让新手少走一些弯路吧！<img class="middle" alt=":)" src="http://blog.inmedia.cn/img/smilies/icon_smile.gif" /><br /></p>
				<p class="bMore">
						<a id="more67" name="more67">
						</a>[更多：]</p>
				<p>
						<strong>Q:</strong> Flash Communication Server是什么？有什么功能？<br /><strong>A:</strong> Flash Communication Server是<a href="http://www.macromedia.com/" target="_blank">macromedia</a>开发的以Flash Player为客户端的网络视音频交互应用的服务器端软件，简称FCS或者Flashcom，可以基于FCS和Flash Player开发诸如流媒体视影音频点播、直播, 视频聊天以及一些实时协作应用，比如交互白板等。具体功能看<a href="http://www.macromedia.com/software/flashcom/productinfo/features/" target="_blank">这里</a>。</p>
				<p>
						<strong>Q:</strong> 那里可以下载FCS?<br /><strong>A:</strong> 请到<a href="http://www.macromedia.com/cfusion/tdrc/index.cfm?product=flashcom" target="_blank">这里</a>下载，目前可以单独下载的最新版本号是MX 1.5 Updater Release 2, flex内嵌了1.6版，不能单独下载，不过有非官方的剥离版本。</p>
				<p>
						<strong>Q:</strong> 安装FCS mx 1.5以后, 在flash mx 2004中使用FCS的组件开发应用，但是组件无法正常工作，这是为什么？<br /><strong>A:</strong> FCS mx 1.5的组件是for mx的，请下载<a href="http://download.macromedia.com/pub/flashcom/updaters/1_5_release_2/fcs_win_updater_r2.zip" target="_blank">组件更新</a>。</p>
				<p>
						<strong>Q:</strong> Flash客户端与FCS通过何种协议通讯？<br /><strong>A:</strong> RTMP协议(Real Time Messaging Protocol)。</p>
				<p>
						<strong>Q:</strong> FCS如何判断Flash客户端要调用哪一个应用程序？<br /><strong>A:</strong> 开发FCS应用时，必须先约定一个应用程序名，如appName，并在FCS安装目录下的applications目录里(例如∶C:\Program Files\Macromedia\Flash Communication Server MX\applications)建立一个appName文件夹，每个FCS应用程序都必须在applications目录下建立自己的文件夹，客户端就可以通过相应的rtmp地址，如rtmp:\appName或者rtmp://127.0.0.1/appName来访问。</p>
				<p>
						<strong>Q:</strong> 服务器端脚本文件的位置和命名。<br /><strong>A:</strong> 服务器端脚本文件应该在相应的FCS应用程序目录中(例如∶C:\Program Files\Macromedia\Flash Communication Server MX\applications\appName)或者该目录的scripts目录下，文件后缀名可以为asc或者js，一般以main.asc或者main.js作为入口文件，FCS在执行服务器端脚本的时遵循以下优先原则(以应用程序名为appName为例)： scripts/main.asc &gt; main.asc &gt; scripts/main.js &gt; main.js &gt; scripts/appName.asc &gt; appName.asc &gt; scripts/appName.js &gt; appName.js。</p>
				<p>
						<strong>Q:</strong> 我修改了服务器端脚本，但是没有效果，这是为什么？<br /><strong>A:</strong> 服务器端脚本修改后必须在App Console里面reload相应的application才会生效。</p>
				<p>
						<strong>Q:</strong> FCS可以实现根据客户端带宽流出不同质量的flv文件吗？<br /><strong>A:</strong> 可以，具体请看<a href="http://www.macromedia.com/devnet/mx/flashcom/articles/flvideo_bandwidth.html" target="_blank">这里</a>。</p>
				<p>
						<strong>Q:</strong> 如何创建一个FCS应用？<br /><strong>A:</strong><a href="http://www.macromedia.com/devnet/mx/flashcom/articles/first_comm_app.html" target="_blank">这篇教程</a>会是一个好起点！</p>
				<p>不断增加中...</p>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/53898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-20 09:47 <a href="http://www.blogjava.net/sl2cj/articles/53898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlashCom发布和播放MP3 </title><link>http://www.blogjava.net/sl2cj/articles/53193.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Fri, 16 Jun 2006 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/53193.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/53193.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/53193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/53193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/53193.html</trackback:ping><description><![CDATA[
		<font size="2">
				<strong>FlashCom发布和播放MP3</strong>
				<!-- vB 中文修改开始: 显示声望 -->
				<!-- vB 中文修改结束 -->
				<hr style="COLOR: #fff" size="1" />
				<!-- / icon and title -->
				<!-- message -->
		</font>
		<div id="post_message_1138" style="OVERFLOW-X: hidden">
				<font size="2">
						<b>播放MP3文件</b>
						<br />我们知道，Flash中默认的流式播放格式是Flv格式，但是在应用程序中，你可以通过客户端脚本来播放MP3音频文件和ID3信息，并使用服务器端脚本发布到stream流。<br />你需要上传MP3文件到服务器端的/streams/application_instance目录（Macromedia FCS MX 1.5 在录制视频流的时候会自动创建 streams 目录，如果不存在，你也可以手动创建）。例如你有个名为CDPlayerApp应用程序，你可以上传MP3文件到/applications/CDPlayerApp/streams/application_instance目录。<br />通过设定共享目录，你还可以在其它应用程序之间共享MP3。<br />找到Vhost.xml文件中的节点，在中添加需要共享的目录，如：<br />foo;c:\data<br />表示所有含有foo名称的目录都会被定向到c:\data目录，如foo/bar会被定向为c:\data\bar.flv。<br />详细的Vhost.xml说明可以参考FlashCom管理手册中相关部分。<br />然后，通过Stream.play指令指定播放的路径和想要播放的MP3文件。为了播放MP3文件，我们需要使用 NetStream对象的play方法，或者使用MC对象的attachAudio方法，特别需要注意的是，在播放文件前面要加上mp3播放标识前缀 mp3:，我们来看代码示例：<br /></font>
				<div style="MARGIN: 5px 20px 20px">
						<div class="smallfont" style="MARGIN-BOTTOM: 2px">
								<font size="2">引用:</font>
						</div>
						<table cellspacing="0" cellpadding="6" width="100%" border="0">
								<tbody>
										<tr>
												<td class="alt2" style="BORDER-RIGHT: 1px inset; BORDER-TOP: 1px inset; BORDER-LEFT: 1px inset; BORDER-BOTTOM: 1px inset">
														<font size="2">1 : //非共享方式播放<br />2 : vidObj.attachVideo(mystream);<br />3 : mystream.play( 'mp3:bolero' );<br />4 : //文件bolero.mp3在FCS服务器的 C:\mp3_files 目录下面<br />5 : //该目录在vhost.xml中被映射到虚拟目录 mp3dir<br />6 : movieObj.attachAudio(mystream2);<br />7 : mystream2.play( 'mp3:mp3dir/bolero' ); </font>
												</td>
										</tr>
								</tbody>
						</table>
				</div>
				<br />
				<font size="2">
						<font color="orangered">提示: 在使用 NetStream.play 方法的时候如果不指定视频或音频格式，会默认为FLV格式, 所以在播放MP3的时候，你必须指定格式播放。也就是说，flv:granada和granada都会播放文件granada.flv，但是mp3:bolero只会播放文件bolero.mp3。注意，这里播放的文件都在服务器端。</font>
						<br />
						<br />要播放MP3文件的ID3信息，必须使用播放前缀id3：并定义相应的回调函数来捕捉id3数据。例如，显示bolero.mp3文件的ID3 信息：<br /><br /></font>
				<div style="MARGIN: 5px 20px 20px">
						<div class="smallfont" style="MARGIN-BOTTOM: 2px">
								<font size="2">引用:</font>
						</div>
						<table cellspacing="0" cellpadding="6" width="100%" border="0">
								<tbody>
										<tr>
												<td class="alt2" style="BORDER-RIGHT: 1px inset; BORDER-TOP: 1px inset; BORDER-LEFT: 1px inset; BORDER-BOTTOM: 1px inset">
														<font size="2">1 : //displays the ID3 tag of bolero.mp3<br />2 : mystream.play( 'id3:bolero' );<br />3 : //callback function to capture the ID3 data. Data will be displayed with<br />4 : //'info.' preceding the data from the tag, for example, info.songtitle.<br />5 : mystream.onId3 = function (info){ <br />6 : for (i in info){ <br />7 : trace(i + ':' + info[ i ]);<br />8 : }<br />9 : } </font>
												</td>
										</tr>
								</tbody>
						</table>
				</div>
				<br />
				<font size="2">
						<b>支持的MP3 ID3信息的版本<br /></b>FlashCom server 1.5 支持UTF-8, UTF-16, and ISO-8859-1 格式的 1.0, 2.3和 2.4.版本的ID3信息，并且只支持文本数据，例如：歌曲名、作者、备注和录制时间等。<br /><br /><b>使用服务器端脚本</b><br />你还可以使用服务器端的Stream对象来播放MP3和获取MP3文件的长度，更详细的可以参考服务器端脚本参考中的Stream.play and Stream.length<br />要删除MP3文件可以使用Application.clearStreams方法，<br />下面来看一个例子，通过Stream.play方法来发布MP3：<br /></font>
				<div style="MARGIN: 5px 20px 20px">
						<div class="smallfont" style="MARGIN-BOTTOM: 2px">
								<font size="2">引用:</font>
						</div>
						<table cellspacing="0" cellpadding="6" width="100%" border="0">
								<tbody>
										<tr>
												<td class="alt2" style="BORDER-RIGHT: 1px inset; BORDER-TOP: 1px inset; BORDER-LEFT: 1px inset; BORDER-BOTTOM: 1px inset">
														<font size="2">01 : // Set up the server stream<br />02 : application.myStream = Stream.get( 'music' );<br />03 : if (application.myStream)<br />04 : { <br />05 : // Publish the MP3 file bolero.mp3 to the stream 'music'<br />06 : // Use the mp3: prefix in front of the stream name and specify 0 for the<br />07 : startTime parameter to indicate the server should play the recorded stream<br />08 : bolero.mp3<br />09 : application.myStream.play('mp3:bolero', 0, -1);<br />10 : } </font>
												</td>
										</tr>
								</tbody>
						</table>
				</div>
				<br />
				<font size="2">使用 Stream.play 方法来捕获和播放 ID3 信息，请参考下面的代码示例：<br /></font>
				<div style="MARGIN: 5px 20px 20px">
						<div class="smallfont" style="MARGIN-BOTTOM: 2px">
								<font size="2">引用:</font>
						</div>
						<table cellspacing="0" cellpadding="6" width="100%" border="0">
								<tbody>
										<tr>
												<td class="alt2" style="BORDER-RIGHT: 1px inset; BORDER-TOP: 1px inset; BORDER-LEFT: 1px inset; BORDER-BOTTOM: 1px inset">
														<font size="2">01 : // Set up the server stream<br />02 : application.myStream = Stream.get( 'description' );<br />03 : application.myStream.onId3 = function(info)<br />04 : { <br />05 : for (i in info)<br />06 : { <br />07 : trace(i + ': ' + info[ i ]);<br />08 : }<br />09 : }<br />10 : if (application.myStream)<br />11 : { <br />12 : // Publish the ID3 text tag data of bolero.mp3 to a stream 'description'.<br />13 : // Use the id3: prefix in front of the stream name and specify 0 for the<br />14 : startTime parameter<br />15 : application.myStream.play( 'id3:bolero', 0, -1);<br />16 : } </font>
												</td>
										</tr>
								</tbody>
						</table>
				</div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/53193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-16 11:25 <a href="http://www.blogjava.net/sl2cj/articles/53193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCS组件篇：ConnectionLight组件</title><link>http://www.blogjava.net/sl2cj/articles/51337.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51337.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51337.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51337.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">FCS组件篇：ConnectionLight组件</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月17日00:01星期三 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">这个一个表示目前连接状态的组件，绿色表示正常，红色表示断开连接，黄色表示响应延迟，灰色表示未连接。点击该指示灯后会显示连接信息显示框，其中包含了延迟速率和即时的上传、下载的速率。<br />如果使用SimpleConnect组件的话，不需要添加任何代码就可以使用ConnectionLight组件。<br />如果没有使用SimpleConnect组件，则需要添加下面的代码。<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : nc=new NetConnection();<br /><font color="#999966">2</font> : nc.connect( <font color="#ff00ff">'rtmp:/connect_test'</font>);<br /><font color="#999966">3</font> : light_mc.connect(nc); <font color="#669966">//light_mc是ConnectionLight组件的实例名</font></font>
								</div>
						</div>
						<br />
						<font size="2">ConnectionLight组件可以设置的两个参数为：<br />measurementInterval 定时侦测间隔时间 默认值为2秒<br />latencyThreshold 延迟最大时间 默认值为0.1秒，超过则变黄灯<br /><br />以上的参数也可以通过设置FCConnectionLight对象的属性来完成<br />FCConnectionLight.measurementInterval<br />FCConnectionLight.latencyThreshold<br /><br />FCConnectionLight对象的方法：<br />FCConnectionLight.connect()<br />FCConnectionLight.close()<br /><br />可以在不同的指示灯的状态下添加自己的行为。<br /></font>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 14:00 <a href="http://www.blogjava.net/sl2cj/articles/51337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCS组件篇：使用SimpleConnect组件</title><link>http://www.blogjava.net/sl2cj/articles/51332.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51332.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51332.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51332.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">FCS组件篇：使用SimpleConnect组件</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月12日10:12星期五 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">当你使用FCS组件开发应用程序的时候，经常需要添加不同的组件，而每个组件都需要连接到服务器，你可以使用相同的网络连接实例把应用程序中所有的实例连接到服务器，SimpleConnect组件就是用来控制所有的应用程序对象到服务器的连接，另外还提供了用户登录界面。<br />我们把上一篇中的例子通过SimpleConnect组件来重新完成。上篇中我们在peopleList组件中使用了NetConnect对象来连接服务器，如果使用了SimpleConnect组件，就不需要自己添加连接代码了。<br />下面来详细看一下如何使用SimpleConnect的：<br />1. 在服务器端的applications目录下创建一个com_test_simcon目录，目录下面创建一个main.asc文件，添加下面代码行<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : load( <font color="#ff00ff">'components.asc'</font> );</font>
								</div>
						</div>
						<br />
						<font size="2">
								<span style="COLOR: royalblue">注意：你可以把main.asc文件命名为com_test_simcon.asc </span>
								<br />2. 在FlashMX2004中创建一个新的文件，拖入peoplelist组件，实例名为peopleList_mc<br />3. 拖入simpleConnect组件，在属性对话框中，设置Application Directory为 rtmp:/com_test_simcon<br />注意：如果你的服务器不是本地，那么需要使用完整地址<br />4. 双击Communication Components属性，在弹出的对话框中添加peopleList_mc<br />5. 测试swf文件，在登录框中输入用户名，用户列表中就会显示了<br />比起上篇中的例子，方便之处就是每添加一个FCS组件在应用程序中，只需要在simpleConnect组件的Communication Components属性框中添加实例名就可以了，而不需要为每个组件添加连接代码。<br /><br />如果你不想使用SimpleConnect组件的话，那么需要在服务器端的application.onConnect方法中添加代码，以便向服务器注册用户名。<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : gFrameworkFC.getClientGlobals(newClient).username = newUserName;</font>
								</div>
						</div>
						<br />
						<font size="2">无论什么时候使用了onconnect方法，你就必须明确的接受用户端的连接，如果你没有使用SimpleConnect组件的话，建议在main.asc文件中添加如下代码：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">01</font> : load( <font color="#ff00ff">'components.asc'</font>);<br /><font color="#999966">02</font> : <font color="#669966">// Listen for the new connection to this application.</font><br /><font color="#999966">03</font> : <font color="#669966">// newUserName is a parameter passed in from the client-side nc.connect call.</font><br /><font color="#999966">04</font> : application.onConnect = <font color="#ff9900">function</font> (newClient, newUserName)<br /><font color="#999966">05</font> : { <br /><font color="#999966">06</font> : <font color="#669966">// Set the global user name with the user name passed into this function.</font><br /><font color="#999966">07</font> : gFrameworkFC.getClientGlobals(newClient).username = newUserName;<br /><font color="#999966">08</font> : <font color="#669966">// Accept the connection from the user.</font><br /><font color="#999966">09</font> : application.acceptConnection(newClient);<br /><font color="#999966">10</font> : <font color="#669966">// Note that if your application requires additional code following the</font><br /><font color="#999966">11</font> : <font color="#669966">// explicit acceptConnection, you must place that code in an</font><br /><font color="#999966">12</font> : <font color="#669966">// application.onConnectAccept statement (required when using components)</font><br /><font color="#999966">13</font> : }</font>
								</div>
						</div>
						<br />
						<font size="2">关于onConnectAccept 和 onConnectReject 方法的使用请参考Applications对象。<br /><br />如果你使用了SimpleConnect组件的话，在服务器端的main.asc文件中只需要包含下面一行代码就可以了。<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : load( <font color="#ff00ff">'components.asc'</font> );</font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">SimpleConnect组件比较重要的方法主要有：<br />connect<br />close<br />setUsername<br />在以后的组件中也会有涉及到SimpleConnect组件的部分。<br /><br />深入SimpleConnect组件，请参考下面文章：<br /></font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040621_215314" target="_blank">
								<font size="2">SimpleConnect组件登录的问题</font>
						</a>
						<br />
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040923_151701" target="_blank">
								<font size="2">SimpleConnect组件一点小技巧</font>
						</a>
						<br />
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040621_210401" target="_blank">
								<font size="2">Application对象</font>
						</a>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 13:59 <a href="http://www.blogjava.net/sl2cj/articles/51332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCS组件篇：RoomList组件</title><link>http://www.blogjava.net/sl2cj/articles/51334.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51334.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51334.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51334.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">FCS组件篇：RoomList组件</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月21日00:01星期日 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">好像还挺多人喜欢使用roomlist组件，我倒是没有怎么使用这个组件，所以原本对这个组件的作用也有点模糊，总觉得这个组件的作用不大（因为完全可以通过动态改变simpleconnect的参数来实现登录不同的房间），不过看了下这个组件还是其它复杂的使用，写这篇文章的同时我也学习一下。<br />RoomList的组件的作用是让用户可以创建、进入和删除房间（确切的说是一个应用程序实例）。该组件类似于一个应用程序管理处，可以控制用户访问不同的应用程序。<br />RoomList组件有两种使用方式：<br />1. 通过虚拟大厅登录不同的应用程序实例；<br />2. 使用大厅应用程序作为入口，登录另外的房间应用程序<br />第一种方法是比较简单的，不过其实道理都相同。下面以第二种方式为例说明。<br />要使用RoomList组件，你必须要创建两个应用程序：大厅和房间。打个比方的话，大厅应用程序可以认为是起始入口，而房间才是用户的目的地。其实roomlist组件可以登录任何fcs应用程序，你也可以打开同一个应用程序的不同实例，只要这些实例具有唯一的会话ID。<br />如果你使用simpleconnect组件的话，并不需要在客户端添加代码就可以使用roomlist组件。服务器端的大厅应用程序目录的main.asc文件中需要加载component.asc文件。<br />在房间应用程序的服务器脚本中，也需要加载component.asc文件，并取得用户和房间的名称，以及管理房间和用户统计等。中间包含了在服务器端的来回带参数调用，但是并不控制用户是否以及连接到该应用程序。如果需要单独使用roomlist组件的话，在房间应用程序中，你必须传递用户名和应用程序实例名。你使用了simpleconnect组件的话，这些都是自动完成的。<br />下面我们来分析一个简单的例子。<br />首先创建大厅应用程序，步骤如下：<br />1. 在服务器端创建lobby_com_test目录，并创建main.asc文件，添加下面代码<br /> load('components.asc');<br />2. 创建客户端文件，名为lobby_com_test. 添加SimpleConnect组件，应用程序路径为rtmp:/lobby_com_test<br />3. 添加roomlist组件，实例名为roomList_mc<br />4. 在simpleconnect组件列表中添加roomList_mc实例<br />5. 设定roomlist组件的目标room应用程序位置，如../chat_room_test/chat_room_test.html（这个路径是调用网站的html文件，根据你的实际位置调整）<br />6. 创建一个房间应用程序（或者使用之前开发的任何聊天室应用程序），名称为chat_room_test<br />7. 在chat_room_test.fla中添加simpleconnect组件，实例名为connector_mc，应用程序路径为 rtmp:/chat_room_test，<br />8. 发布应用程序的时候，会生成一个chat_room_test.html文件<br />9. 更改HTML参数设定，把文件body标识内容替换为:<br /></font>
						<textarea rows="12" cols="55">&lt;SCRIPT LANGUAGE=JavaScript1.1&gt;&lt;br/&gt;&lt;!--&lt;br/&gt;// This extracts any parameters passed to the HTML document&lt;br/&gt;// and passes them directly to the Flash movie&lt;br/&gt;var appURL = String(document.location);&lt;br/&gt;if (appURL.indexOf('?') != -1) { &lt;br/&gt;var appParams = appURL.substr(appURL.indexOf('?'));&lt;br/&gt; } else { &lt;br/&gt;var appParams = '';&lt;br/&gt; }&lt;br/&gt;document.write(’&lt;OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-&lt;br/&gt;444553540000'’);&lt;br/&gt;document.write(’ codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' ’);&lt;br/&gt;document.write(’ ID='chat_room_test' WIDTH='550' HEIGHT='300' ALIGN=''&gt;’);&lt;br/&gt;document.write(’ &lt;PARAM NAME=movie VALUE='chat_room_test.swf’ + appParams + ’'&gt; ’);&lt;br/&gt;document.write(’ &lt;PARAM NAME=quality VALUE=high&gt; &lt;PARAM NAME=bgcolor VALUE=#FFFFFF&gt; ’);&lt;br/&gt;document.write(’ &lt;EMBED src='chat_room_test.swf’ + appParams + ’' quality=high bgcolor=#FFFFFF ’);&lt;br/&gt;document.write(’ swLiveConnect=FALSE WIDTH='550' HEIGHT='300' NAME='chat_room_test' ALIGN=''’);&lt;br/&gt;document.write(’ TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'&gt;’);&lt;br/&gt;document.write(’ &lt;/EMBED&gt;’);&lt;br/&gt;document.write(’ &lt;/OBJECT&gt;’);&lt;br/&gt;//--&gt;&lt;br/&gt;&lt;/SCRIPT&gt;</textarea>
						<br />
						<font size="2">10. 在服务器端的chat_room_test目录下面创建main.asc文件，其中添加代码如下：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">01</font> : <font color="#669966">// 加载组件包含文件</font><br /><font color="#999966">02</font> : load( <font color="#ff00ff">'components.asc'</font> );<br /><font color="#999966">03</font> : <br /><font color="#999966">04</font> : <font color="#669966">//在应用程序连接事件中增加用户ID到全局变量，允许客户端连接，调用方法获取房间实例名称等</font><br /><font color="#999966">05</font> : application.onConnect = <font color="#ff9900">function</font>( newClient, username, <font color="#999900">password</font> ) { <br /><font color="#999966">06</font> : <font color="#669966">// Save the user name</font><br /><font color="#999966">07</font> : gFrameworkFC.getClientGlobals(newClient).username = username;<br /><font color="#999966">08</font> : <font color="#669966">// Accept the new user’s connection</font><br /><font color="#999966">09</font> : application.acceptConnection(newClient);<br /><font color="#999966">10</font> : <font color="#669966">// Get the instance name and update the room count</font><br /><font color="#999966">11</font> : <font color="#ff9900">if</font> (this.name.indexOf('/'</font>) != -1) { <br /><font color="#999966">12</font> : newClient.room = this.name.substr(this.name.lastIndexOf('/')+1);<br /><font color="#999966">13</font> : roomConnect(newClient);<br /><font color="#999966">14</font> : }<br /><font color="#999966">15</font> : }<br /><font color="#999966">16</font> : <br /><font color="#999966">17</font> : <font color="#669966">//定义连接到房间的返回值处理</font><br /><font color="#999966">18</font> : <font color="#ff9900">function</font> roomResult(newClient) { <br /><font color="#999966">19</font> : this.onResult = function(roomName) { <br /><font color="#999966">20</font> : newClient.call( <font color="#ff00ff">'FCSimpleConnect/connector_mc/roomName'</font> ,null,roomName);<br /><font color="#999966">21</font> : }<br /><font color="#999966">22</font> : }<br /><font color="#999966">23</font> : <br /><font color="#999966">24</font> : <font color="#669966">//房间连接时候传递用户选择的房间名称，调用roomResult得到返回值</font><br /><font color="#999966">25</font> : <font color="#ff9900">function</font> roomConnect (newClient, room) { <br /><font color="#999966">26</font> : <font color="#669966">// Create a new NetConnection</font><br /><font color="#999966">27</font> : lobby_nc = <font color="#ff9900">new</font> NetConnection();<br /><font color="#999966">28</font> : lobby_nc.onStatus = <font color="#ff9900">function</font> (infoStatus) { <br /><font color="#999966">29</font> : <font color="#ff9900">if</font> (infoStatus.code == <font color="#ff00ff">'NetConnection.Connect.Success'</font> ) { <br /><font color="#999966">30</font> : lobby_nc.call( <font color="#ff00ff">'FCRoomList/roomlist_mc/roomConnect'</font>, <font color="#ff9900">new</font> roomResult(newClient), newClient.room);<br /><font color="#999966">31</font> : }<br /><font color="#999966">32</font> : };<br /><font color="#999966">33</font> : <font color="#669966">// Connect to the lobby application</font><br /><font color="#999966">34</font> : lobby_nc.connect( <font color="#ff00ff">'rtmp://localhost/lobby_com_test'</font> );<br /><font color="#999966">35</font> : }<br /><font color="#999966">36</font> : <br /><font color="#999966">37</font> : <font color="#669966">// 断开连接的事件响应</font><br /><font color="#999966">38</font> : <font color="#669966">// 客户端断开连接，通知大厅应用程序</font><br /><font color="#999966">39</font> : application.onDisconnect = <font color="#ff9900">function</font>( client ) { <br /><font color="#999966">40</font> : <font color="#ff9900">if</font> (client.room != <font color="#ff9900">null</font>) { <br /><font color="#999966">41</font> : roomDisconnect(client.room);<br /><font color="#999966">42</font> : }<br /><font color="#999966">43</font> : }<br /><font color="#999966">44</font> : <font color="#669966">//调整房间数据，移除用户显示</font><br /><font color="#999966">45</font> : <font color="#ff9900">function</font> roomDisconnect (room) { <br /><font color="#999966">46</font> : <font color="#669966">// Create a new NetConnection</font><br /><font color="#999966">47</font> : lobby_nc = <font color="#ff9900">new</font> NetConnection();<br /><font color="#999966">48</font> : lobby_nc.onStatus = <font color="#ff9900">function</font> (infoStatus) { <br /><font color="#999966">49</font> : <font color="#ff9900">if</font> (infoStatus.code == <font color="#ff00ff">'NetConnection.Connect.Success'</font> ) { <br /><font color="#999966">50</font> : lobby_nc.call( <font color="#ff00ff">'FCRoomList/roomlist_mc/roomDisconnect'</font> , <font color="#ff9900">null</font>, room);<br /><font color="#999966">51</font> : }<br /><font color="#999966">52</font> : }<br /><font color="#999966">53</font> : <font color="#669966">// Connect to the lobby application</font><br /><font color="#999966">54</font> : lobby_nc.connect( <font color="#ff00ff">'rtmp://localhost/lobby_com_test'</font> );<br /><font color="#999966">55</font> : }</div>
						</div>
						<font size="2">保存main.asc文件，重启应用程序，按照下面步骤测试roomlist组件。<br />1. 打开包含lobby_com_test.swf文件的lobby_com_test.html，并登录服务器<br />2. 增加房间到房间列表<br />3. 选择房间，进入<br />4. 一个新的 chat_room_test应用程序实例窗口会打开<br />5. 用同样的方式打开另一个房间实例</font>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 13:59 <a href="http://www.blogjava.net/sl2cj/articles/51334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的聊天室开发教程（三）：和服务器之间传递参数</title><link>http://www.blogjava.net/sl2cj/articles/51329.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51329.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51329.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51329.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">我的聊天室开发教程（三）：和服务器之间传递参数</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月30日00:11星期二 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">在使用FCS原来的组件过程中，默认的与服务器之间传递的参数只有username变量，但是在开发自己的Flashcom应用程序时，经常需要向服务器传递更多的参数。要做到这一点，我们需要修改组件和服务器端的代码。<br />先举个简单的例子。在SimpleConnect组件连接服务器的时候，是通过call指令呼叫服务器端的方法。<br />如果我们希望客户端和服务器之间除了传递用户名之外，还想传递用户编号（便于后台操作数据库）、用户性别（用于客户端显示性别标识）、摄像头是否可用、麦克风是否可用（用于列表显示状态）等参数，可以修改服务器端的simpleconnect.asc文件connect方法，增加相应的参数：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : FCSimpleConnect.prototype.connect = <font color="#ff9900">function</font>( client, username, userId, userSex,cam,mic) { <br /><font color="#999966">2</font> : <font color="#ff9900">var</font> clocal = this.getClientLocalStorage(client);<br /><font color="#999966">3</font> : <font color="#ff9900">var</font> cglobal = this.getClientGlobalStorage(client);<br /><font color="#999966">4</font> : cglobal.username = username;<br /><font color="#999966">5</font> : clocal.id = <font color="#ff00ff">'u'</font> + this.getClientID(client);<br /><font color="#999966">6</font> : this.users_so.setProperty(client.id, { id:userId, name:username, sex:userSex,cam:cam,mic:mic });<br /><font color="#999966">7</font> : <font color="#ff9900">return</font> clocal.id;<br /><font color="#999966">8</font> : }</font>
								</div>
						</div>
						<br />
						<font size="2">接下来客户端连接FCSimpleConnect对象的方式就按照服务器端定义的方法来调用就可以了，例如：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : this.nc.call(this.prefix + <font color="#ff00ff">'connect'</font> , res, this.username, this.UserSex, this.Camera, this.Mic);</font>
								</div>
						</div>
						<br />
						<font size="2">其实这些参数在simpleconnect.asc中并没有实际的作用，只是用来说明向服务器传递变量的方法，并且方便以后的扩展。如果希望使这些参数在全局有效，可以注册服务器端全局变量。注册方式类似于：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : cglobal.username = username;</font>
								</div>
						</div>
						<br />
						<font size="2">那么当我们需要接受服务器端的参数呢，又应该如何处理呢？下面通过peoplelist组件来看下客户端如何实现接受服务器端的参数。<br />服务器端people.asc中connect方法代码为：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : FCPeopleList.prototype.connect = <font color="#ff9900">function</font>( client,userSex,cam,mic ) { <br /><font color="#999966">2</font> : <font color="#ff9900">var</font> cglobal = this.getClientGlobalStorage(client);<br /><font color="#999966">3</font> : <font color="#ff9900">var</font> clocal = this.getClientLocalStorage(client);<br /><font color="#999966">4</font> : clocal.id = <font color="#ff00ff">'u'</font> + this.getClientID(client);<br /><font color="#999966">5</font> : userName=cglobal.username == <font color="#ff9900">null</font> ? <font color="#ff00ff">'</font> fc_lurker'</font> : cglobal.username;<br /><font color="#999966">6</font> : this.users_so.setProperty(clocal.id, { name:userName, cam:cam,mic:mic,sex:userSex,ip:client.ip });<br /><font color="#999966">7</font> : }</div>
						</div>
						<br />
						<font size="2">在连接peoplelist组件的时候，会呼叫服务器端的FCPeopleList对象的call方法。<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : this.nc.call(this.prefix + <font color="#ff00ff">'connect'</font> , <font color="#ff9900">null</font>, this.UserSex, this.Camera, this.Mic );</font>
								</div>
						</div>
						<br />
						<font size="2">在同步用户列表的时候，方法代码修改为：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">01</font> : this.so.onSync = function(list) { <br /><font color="#999966">02</font> : this.owner.people_lb.removeAll();<br /><font color="#999966">03</font> : <font color="#ff9900">var</font> totalUsers = 0;<br /><font color="#999966">04</font> : <font color="#ff9900">var</font> totalLurkers = 0;<br /><font color="#999966">05</font> : <font color="#ff9900">for</font> (<font color="#ff9900">var</font> i <font color="#ff9900">in</font> this.data) { <br /><font color="#999966">06</font> : <font color="#ff9900">if</font> (this.data[ i ].name == <font color="#ff00ff">'</font> fc_lurker'</font> ) { <br /><font color="#999966">07</font> : totalLurkers++;<br /><font color="#999966">08</font> : } <font color="#ff9900">else</font><font color="#ff9900">if</font> (this.data[ i ].name != <font color="#ff9900">null</font>) { <br /><font color="#999966">09</font> : totalUsers++;<br /><font color="#999966">10</font> : this.owner.people_lb.addItem(this.data[ i ].name,{ id:i,sex:this.data[ i ].sex,name:this.data[ i ].name,ip:this.data[ i ].ip,cam:this.data[ i ].cam,mic:this.data[ i ].mic });<br /><font color="#999966">11</font> : }<br /><font color="#999966">12</font> : }</div>
						</div>
						<br />
						<font size="2">这样，把每个用户的相关信息全部记录在list组件的data属性中，便于后续的其它操作。<br />另外一个比较实际的应用就是在chat组件的使用过程中，需要判断用户的身份，和发送私聊信息的时候需要知道私聊对象的名字，这些都需要扩展服务器参数。这些地方各位可以仔细参详源文件。<br />服务器端相关的asc文件下载：[ </font>
						<a href="http://blog.liu21st.com/up/1101744642.rar" target="_blank">
								<font size="2">up/1101744642.rar</font>
						</a>
						<font size="2"> ]<br />PS：如果需要在服务器端显示中文，请把服务器端脚本文件转换为utf8编码格式。</font>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 13:56 <a href="http://www.blogjava.net/sl2cj/articles/51329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的聊天室开发教程（二）：添加聊天表情</title><link>http://www.blogjava.net/sl2cj/articles/51327.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51327.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51327.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51327.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">我的聊天室开发教程（二）：添加聊天表情</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月28日13:39星期日 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">这个问题是网友提到的最多的问题，也的确是我在开发过程中遇到问题最多的地方。今天大致归纳下，不知道能不能全面。<br />主要是因为Flash本身对HTML的支持程度不足，才导致在Flashcom应用程序中使用表情符号要通过其它方式来处理。网上也有不同的实现方式，但是我认为smileyTextField组件是最方便的一种。<br /></font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040621_211415" target="_blank">
								<font size="2">SmileyTextField表情组件介绍</font>
						</a>
						<br />
						<a href="http://www.ultrasaurus.com/cgi-bin/chiq/chiq.cgi?emoticon_chat" target="_blank">
								<font size="2">更多的表情实现方法</font>
						</a>
						<br />
						<font size="2">但是，结合到FlashCom应用程序中，却很多问题：<br />1. </font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040702_023526" target="_blank">
								<font size="2">表情符号总是显示在第一行</font>
						</a>
						<font size="2">
								<br />2. </font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040716_125356" target="_blank">
								<font size="2">表情符号位置Y坐标偏移</font>
						</a>
						<br />
						<font size="2">3. </font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040810_180928" target="_blank">
								<font size="2">表情组件对新版List组件的影响</font>
						</a>
						<br />
						<font size="2">4. </font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20040729_094017" target="_blank">
								<font size="2">表情组件的中文字符显示问题</font>
						</a>
						<br />
						<font size="2">经过不断的测试和交流，在Flashcom聊天室中集成表情组件的问题都已经解决，请详细阅读和参考以上日志。完整的SmileyTextField代码请参考源文件。<br />主要影响到的和需要修改代码的组件是：PeopleList组件和Chat组件。<br />Chat组件主要是要修改和和服务器端的结合部分，因为SmileyTextField组件只是负责前端显示的转换，同步工作仍然要通过FlashCom服务器。这部分的具体实施细节留待Chat组件的使用描述。<br />这里再讲下如何添加自己的表情符号，一般使用默认的表情符号也够用了。因为，要添加自定义的表情符号有些复杂。<br />首先，找到隐藏的assets图层，选中smiLibrary_mc实例-&gt;编辑后，可以在第二帧找到表情MC库，除了添加自定义表情MC为，不要忘了注册表情实例，通过使用registerSmiley(smiVarsObj)方法。<br />smiVarsObj是一个表情对象，主要包含属性：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<code>
												<ol>
														<li>
																<span style="COLOR: #000000">
																		<font size="2">
																				<span style="COLOR: #0000cc">_w </span>
																				<span style="COLOR: #006600">: </span>
																		</font>
																		<span style="COLOR: #0000cc">
																				<font size="2">表情MC的宽度<br /></font>
																				<li>
																						<font size="2">_h </font>
																				</li>
																		</span>
																		<span style="COLOR: #006600">
																				<font size="2">: </font>
																		</span>
																		<span style="COLOR: #0000cc">
																				<font size="2">表情MC的高度<br /></font>
																				<li>
																						<font size="2">_code </font>
																				</li>
																		</span>
																		<span style="COLOR: #006600">
																				<font size="2">: </font>
																		</span>
																		<span style="COLOR: #0000cc">
																				<font size="2">表情对应的代码<br /></font>
																				<li>
																						<font size="2">_link </font>
																				</li>
																		</span>
																		<span style="COLOR: #006600">
																				<font size="2">: </font>
																		</span>
																		<span style="COLOR: #0000cc">
																				<font size="2">表情对应的实例名<br /></font>
																				<li>
																						<font size="2">_anim </font>
																				</li>
																		</span>
																		<span style="COLOR: #006600">
																				<font size="2">: </font>
																		</span>
																		<span style="COLOR: #0000cc">
																				<font size="2">是否有动画<br /></font>
																				<li>
																						<font size="2">_code和_link属性是必须的，其实还有_show 和 _base 属性不太常用，可以不用理会。</font>
																				</li>
																		</span>
																		<font size="2">
																		</font>
																</span>
														</li>
												</ol>
										</code>
										<br />
								</div>
						</div>
						<br />
						<br />
						<font size="2">注册方法如：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : <font color="#ff9900">#initclip</font> 2<br /><font color="#999966">2</font> : SMI_NS.registerSmiley({ _code:':kiss:'</font>, _link:'smi_kiss', _w:37, _anim:true });<br /><font color="#999966">3</font> : <font color="#ff9900">#endinitclip</font></div>
						</div>
						<br />
						<br />
						<font size="2">曾经一直想把SmileyTextField组件的显示框换成V2组件的文本框，但是问题很多，有朋友解决不妨交流下</font>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 13:55 <a href="http://www.blogjava.net/sl2cj/articles/51327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的聊天室开发教程（一）：读取配置文件</title><link>http://www.blogjava.net/sl2cj/articles/51326.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51326.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51326.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51326.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="2">我的聊天室开发教程（一）：读取配置文件</font>
		</h1>
		<div>
				<h2>
						<span id="arttime">
								<font size="2">2004年11月27日21:45星期六 [ </font>
								<a href="http://blog.liu21st.com/index.php?job=showcat&amp;cat=16">
										<font size="2">FMS</font>
								</a>
								<font size="2"> ] </font>
						</span>
						<a title="用狗狗订阅" href="http://www.gougou.com/1R9370IK" target="_blank">
								<font size="2">
										<img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" />
								</font>
						</a>
				</h2>
				<br />
		</div>
		<div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%">
				<span id="zoom">
						<font size="2">一直没有顾上，今天开个头，也不知道什么时候可以写完。<br />如果不知道我的聊天室是什么，</font>
						<a href="http://blog.liu21st.com/index.php?job=art&amp;articleid=a_20041012_165008" target="_blank">
								<font size="2">看这里吧</font>
						</a>
						<font size="2">。<br />今天首先讲下加载聊天配置文件<br />加载配置文件是通过调用php文件来动态生成XML文件，然后通过Flash本身XML对象的方法来读取。<br />首先，我们要<strong>定义php文件调用路径</strong><br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : <font color="#ff9900">var</font> PhpPath = <font color="#ff00ff">'chat/'</font> ; <font color="#669966">//程序执行路径</font></font>
								</div>
						</div>
						<br />
						<font size="2">并定义了配置变量的保存数组<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : _global.Setup = <font color="#ff9900">new</font> Array(); <font color="#669966">//配置数组</font></font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">接下来就是<strong>读取配置文件</strong><br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : <font color="#ff9900">var</font> myXML = <font color="#ff9900">new</font> XML() ;<br /><font color="#999966">2</font> : myXML.ignoreWhite = true ;<br /><font color="#999966">3</font> : myXML.load(PhpPath + <font color="#ff00ff">'config.php?rand='</font> + Math.random());</font>
								</div>
						</div>
						<br />
						<font size="2">注意使用rand参数是为了防止缓存<br /><br /><strong>定义加载完成事件</strong><br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : myXML.onLoad = function(succes){ <br /><font color="#999966">2</font> : if(succes){ <br /><font color="#999966">3</font> : <font color="#669966">//读取XML 数据</font><br /><font color="#999966">4</font> : } <font color="#ff9900">else</font> { <br /><font color="#999966">5</font> : showMsg( <font color="#ff00ff">'配置文件读取错误！'</font> );<br /><font color="#999966">6</font> : }<br /><font color="#999966">7</font> : } </font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">
								<strong>读取XML数据</strong>的方法<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : <font color="#ff9900">var</font> root = this.firstChild ;<br /><font color="#999966">2</font> : nodes = root.childNodes ;<br /><font color="#999966">3</font> : for(var j=0; j &lt; nodes.length; j++) <br /><font color="#999966">4</font> : { <br /><font color="#999966">5</font> : varName = nodes[j].attributes.name;<br /><font color="#999966">6</font> : varExpr = nodes[j].attributes.expr;<br /><font color="#999966">7</font> : Setup[varName] = varExpr;//把传递的变量存入数组<br /><font color="#999966">8</font> : }</font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">我定义的XML配置文件格式如下：<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : &lt;<font color="#ff9900">data</font> &gt;<br /><font color="#999966">2</font> : &lt;<font color="#ff9900">var</font> name='变量名称'</font> expr='变量值' /&gt;<br /><font color="#999966">3</font> : 。。。。。。<br /><font color="#999966">4</font> : &lt; /<font color="#ff9900">data</font> &gt;</div>
						</div>
						<br />
						<font size="2">至于如果取得变量的值就要根据你使用的编程语言了，如果你不想动态生成XML文件，或者觉得没有一些变动的参数的话，就可以直接读取xml文件的方式，这样就不需要WEB环境的支持，myXML.load的时候直接加载XML文件就可以了。如果使用PHP、ASP等动态语言，请按照各自的方式获取和定义变量的值。<br /><br />其中的<strong>各个变量含义</strong>如下<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">01</font> : AppDirectory 应用程序目录<br /><font color="#999966">02</font> : MaxConnect 最大连接数<br /><font color="#999966">03</font> : UserName 用户名<br /><font color="#999966">04</font> : UserSex 性别<br /><font color="#999966">05</font> : UserLevel 用户级别<br /><font color="#999966">06</font> : RoomId 房间号<br /><font color="#999966">07</font> : RoomName 房间名<br /><font color="#999966">08</font> : MaxUser 房间最多用户数<br /><font color="#999966">09</font> : WebSiteUrl 服务器地址<br /><font color="#999966">10</font> : ChatStatus 聊天状态</font>
								</div>
						</div>
						<br />
						<font size="2">你可以根据自己系统的需要增减参数<br /><br />XML数据读取完成后，就要开始做一些<strong>聊天室系统的初始化</strong>工作了，（当然，在这里你可以加上条件判断，如聊天状态chatStatus的值是否为1等）。首先要做的事情是连接服务器。<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : simpleconnect.appDirectory= <font color="#ff00ff">'rtmp://'</font> + Setup[ <font color="#ff00ff">'WebSiteUrl'</font> ] + <font color="#ff00ff">'/'</font> + Setup[ <font color="#ff00ff">'AppDirectory'</font> ];<br /><font color="#999966">2</font> : simpleconnect.serverConnect(Setup[ <font color="#ff00ff">'UserName'</font> ], Setup[ <font color="#ff00ff">'RoomId'</font> ]);</font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">另外，在这里可以<strong>根据配置参数来做条件判断</strong>，如是否隐藏管理员功能<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : <font color="#ff9900">if</font> (Setup[ <font color="#ff00ff">'UserLevel'</font> ]==1){ <br /><font color="#999966">2</font> : clearBut._visible = true; <font color="#669966">//清屏</font><br /><font color="#999966">3</font> : kickBut._visible = true; <font color="#669966">//踢人</font><br /><font color="#999966">4</font> : banBut._visible = true; <font color="#669966">//禁止</font><br /><font color="#999966">5</font> : lookBut._visible = true; <font color="#669966">//查看IP</font><br /><font color="#999966">6</font> : }</font>
								</div>
						</div>
						<br />
						<br />
						<font size="2">其它方面，就是要检测用户的摄像头和麦克风是否可用<br />这里使用了两个方法<br />checkForCam() 检测摄像头<br />checkForMic() 检测麦克风<br />具体请参考源文件<br />根据检测情况来设置配置数组<br /></font>
						<div id="code">
								<div style="MARGIN-LEFT: 5pt">
										<font size="2">
												<font color="#999966">1</font> : if(checkForCam()==1) Setup[ <font color="#ff00ff">'Camera'</font> ]=1;<br /><font color="#999966">2</font> : <font color="#ff9900">else</font> Setup[ <font color="#ff00ff">'Camera'</font> ]=0;<br /><font color="#999966">3</font> : if(checkForMic()==1) Setup[ <font color="#ff00ff">'Mic'</font> ]=1;<br /><font color="#999966">4</font> : <font color="#ff9900">else</font> Setup[ <font color="#ff00ff">'Mic'</font> ]=0;</font>
								</div>
						</div>
						<br />
						<font size="2">在这个部分，你可以添加自己的条件判断了～<br /><br />现在读取配置文件的工作和系统初始化的工作已经完成，其实大家可以根据我的实现方式发挥，不要拘泥于我的代码实现～ <br /></font>
				</span>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-08 13:54 <a href="http://www.blogjava.net/sl2cj/articles/51326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlashCom Port Test工具  (01-12-2005) </title><link>http://www.blogjava.net/sl2cj/articles/51025.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Wed, 07 Jun 2006 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51025.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51025.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51025.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="4" width="464" border="0">
				<tbody>
						<tr>
								<td valign="center" align="left" bgcolor="#ebebeb">
										<font size="2">
												<font class="blogtitle">
														<strong>FlashCom Port Test工具</strong>
												</font>
										</font>
								</td>
								<td valign="bottom" align="right" bgcolor="#ebebeb">
										<font class="date" face="Verdana" color="#e5571d" size="2">(01-12-2005)</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="3" width="444" border="0">
				<tbody>
						<tr>
								<td colspan="2">
										<font face="Verdana" color="#e5571d" size="2">
												<img height="5" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td class="blogbody" colspan="2">
										<p>
												<font size="2">Macromedia網站有一個連接FlashCom的</font>
												<a href="http://www.macromedia.com/go/tn_16466" target="_blank">
														<font color="#000000" size="2">測試工具</font>
												</a>
												<font size="2">，通常客戶的End User遇到連接問題，我都會叫他們叫End User到哪裡測試一下，將結果報告給我，通常問題只有一個，大公司都有Firewall，員工連出外面一定經過Proxy Server，通常1935這些Port一定封了，所以基於測試結果，我才可以提供可行解決方案。</font>
										</p>
										<p>
												<font size="2">可是，測試工具在Macromedia Server，End User能夠連上不代表能夠連上客戶自己FlashCom。Macromedia網站那個工具其實隱藏兩個Input TextField，可以連向其他Server，但沒有理由叫End User自行輸入。而且，真實FlashCom安全設定，一定將其他外來Domain連接擋了。</font>
										</p>
										<p>
												<font size="2">因此有必要每個FlashCom部署Server都應該有這樣測試工具，於是我下載了Macromedia那個工具並改做了成</font>
												<a href="http://www.luar.com.hk/flashcomponent/FlashComPortTest.swf">
														<font color="#7d7c7c" size="2">FlashComPortTest.swf</font>
												</a>
												<font size="2">，只要將它放在自己Server，它支援Flashvars：host和app，host是FlashCom路徑，app是一個可供連接測試的Application Instance，最簡單就是在&lt;FlashCom&gt;/applications建立一個Folder，不用放main.asc，app等於它就可以。例如：FlashComPortTest.swf?host=mydomain.com&amp;app=porttest</font>
										</p>
										<p>
												<font size="2">
														<u>其他類似工具</u>
												</font>
										</p>
										<ul>
												<li>
														<a href="http://www.flashcomguru.com/apps/port_test/index.cfm" target="_blank">
																<font color="#000000" size="2">Flashcomguru - port tester</font>
														</a>
												</li>
										</ul>
										<p>
												<font size="2">
												</font>
										</p>
										<a name="more">
										</a>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td colspan="2">
										<font class="posted">
												<font face="Verdana" size="2">本文章由</font>
												<a href="http://www.luar.com.hk/" target="_blank">
														<font face="Verdana" color="#000000" size="2">luar</font>
												</a>
												<font face="Verdana" size="2">發表。</font>
										</font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-07 09:37 <a href="http://www.blogjava.net/sl2cj/articles/51025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>連接FlashCom服務器或Flash Remoting Gateway跨網域(Across Domain)的問題  (15-08-2003) </title><link>http://www.blogjava.net/sl2cj/articles/51024.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Wed, 07 Jun 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51024.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51024.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51024.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="4" width="464" border="0">
				<tbody>
						<tr>
								<td valign="center" align="left" bgcolor="#ebebeb">
										<font size="2">
												<font class="blogtitle">
														<strong>連接FlashCom服務器或Flash Remoting Gateway跨網域(Across Domain)的問題</strong>
												</font>
										</font>
								</td>
								<td valign="bottom" align="right" bgcolor="#ebebeb">
										<font class="date" face="Verdana" color="#e5571d" size="2">(15-08-2003)</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="3" width="444" border="0">
				<tbody>
						<tr>
								<td colspan="2">
										<font face="Verdana" color="#e5571d" size="2">
												<img height="5" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td class="blogbody" colspan="2">
										<p>
												<font size="2">所謂連接跨網域FlashCom服務器意思就是：SWF文件在domainA.com，FlashCom服務器在domainB.com，在SWF文件中用：</font>
										</p>
										<p>
												<font size="2">my_nc = new NetConnection();<br />my_nc.connect("rtmp://www.domainB.com/appsInst");</font>
										</p>
										<p>
												<font size="2">我測試過，這是<font color="#ff8800">可以</font>的，忽然有一個奇想，豈不是可以偷別人的FlashCom服務器來用？當然啦，別人的main.asc有你需要用的程序。</font>
										</p>
										<p>
												<font size="2">所謂連接跨網域Flash Remoting Gateway意思就是：SWF文件在domainA.com，Flash Remoting Gateway在domainB.com，在SWF文件中用：</font>
										</p>
										<p>
												<font size="2">NetServices.setDefaultGatewayUrl("http://www.domainB.<br />com/flashremoting/gateway.aspx");<br />gatewayConnection=NetServices.createGatewayConnection();</font>
										</p>
										<p>
												<font size="2">我測試過，這個當然是<font color="#ff8800">不可以</font>的，因為Flash Remoting Gateway只是跳板，跟著就可以連接Remote Services，如果可以這樣做，所有人都不用Macromedia的產品，哈哈。</font>
										</p>
										<a name="more">
										</a>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td colspan="2">
										<font class="posted">
												<font face="Verdana" size="2">本文章由</font>
												<a href="http://www.luar.com.hk/" target="_blank">
														<font face="Verdana" color="#000000" size="2">luar</font>
												</a>
												<font face="Verdana" size="2">發表。</font>
										</font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-07 09:33 <a href="http://www.blogjava.net/sl2cj/articles/51024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hello World  (02-05-2003) </title><link>http://www.blogjava.net/sl2cj/articles/51023.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Wed, 07 Jun 2006 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51023.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51023.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51023.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="4" width="464" border="0">
				<tbody>
						<tr>
								<td valign="center" align="left" bgcolor="#ebebeb">
										<font size="2">
												<font class="blogtitle">
														<strong>Hello World</strong>
												</font>
										</font>
								</td>
								<td valign="bottom" align="right" bgcolor="#ebebeb">
										<font class="date" face="Verdana" color="#e5571d" size="2">(02-05-2003)</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="3" width="444" border="0">
				<tbody>
						<tr>
								<td colspan="2">
										<font face="Verdana" color="#e5571d" size="2">
												<img height="5" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td class="blogbody" colspan="2">
										<font size="2">這是最簡單的範例，當Flash連到FlashCom中一個Application後，它會Send一句Hello World給Flash。<br /><br />在applications下建立一個叫helloworld Folder後，建立一個純文字檔main.asc，裡面輸入：<br /></font>
										<pre>
												<font size="2">application.onConnect = function(newClient) {
     application.acceptConnection(newClient);
     newClient.call("msgFromSrvr", false, "Hello World");
}
</font>
										</pre>
										<font size="2">它作用時是當有Flash影片連上它時，它就會Call那個Flash中一個負責與FlashCom聯繫的NetConnection Object的一個自定Method叫msgFromSrvr，並傳出參數"Hello World"。<br /><br />在Flash MX中，Frame 1輸入：<br /></font>
										<pre>
												<font size="2">fc = new NetConnection();
fc.connect("rtmp:/helloworld");
fc.msgFromSrvr = function(msg) {
     trace(msg);
};
</font>
										</pre>
										<font size="2">測試影片，就可以在Output窗口中見到Hello World。 </font>
										<a name="more">
										</a>
										<font size="2">
												<u>注意：</u>
												<br />新手經常面對的問題，就是經常來回修改Flash MX和main.asc中的ActionScript，但測試影片卻沒有改應，原因是因為凡main.asc經過修改後，都必須Reload那個Application才有效。<br /><br />方法是在Flash MX Menu Bar選Window&gt;Communication App Inspector，登入後在Active Application Instances選你那個Application，例如：helloworld，按View Detail後，再按Reload App，按OK，再測試影片便可。<br /><br />[</font>
										<a href="http://www.luar.com.hk/flashbook/upload/helloworld.zip">
												<font color="#000000" size="2">源文件</font>
										</a>
										<font size="2">]<br /><br /></font>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td colspan="2">
										<font class="posted">
												<font face="Verdana" size="2">本文章由</font>
												<a href="http://www.luar.com.hk/" target="_blank">
														<font face="Verdana" color="#000000" size="2">luar</font>
												</a>
												<font face="Verdana" size="2">發表。</font>
										</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="0" width="464" border="0">
				<tbody>
						<tr>
								<td colspan="2">
										<font face="Verdana" size="2">
												<img height="10" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
						<tr valign="center" align="left">
								<td bgcolor="#ebebeb">
										<font face="Verdana" size="2">
												<img height="22" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
								<td width="463" bgcolor="#ebebeb" height="16">
										<a name="comments">
										</a>
										<font size="2">
												<font class="comments-head" face="Verdana" color="#7d7c7c">
														<strong>意見</strong>
												</font>
										</font>
								</td>
						</tr>
						<tr valign="center" align="left">
								<td colspan="2">
										<font size="2">
												<img height="10" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="0" width="464" border="0">
				<tbody>
						<tr align="left">
								<td>
										<table cellspacing="0" cellpadding="0" width="444" border="0">
												<tbody>
														<tr align="left">
																<td>
																		<ul>
																				<li class="comments-body">
																						<p>
																								<font size="2">請問是否所有的應用都必須建立在applications這個文件夾下??<br />如果我想放置在其他位置可以嗎??</font>
																						</p>
																						<p class="comments-post">
																								<font size="2">由</font>
																								<a href="mailto:zipli@ynmail.com">
																										<font color="#000000" size="2">zipli</font>
																								</a>
																								<font size="2">於13-05-2003發表</font>
																						</p>
																				</li>
																				<li class="comments-body">
																						<p>
																								<font size="2">可以放在其他地方，不過你要修改C:\Program Files\Macromedia\Flash Communication Server MX\conf\_defaultRoot_\_defaultVHost_\Vhost.xml裡面的一句：<br />&lt;AppsDir&gt;ｃ:\Program Files\Macromedia\Flash Communication Server MX\applications&lt;/AppsDir&gt;為你新地方。</font>
																						</p>
																				</li>
																		</ul>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-07 09:31 <a href="http://www.blogjava.net/sl2cj/articles/51023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安裝篇  (01-05-2003) </title><link>http://www.blogjava.net/sl2cj/articles/51020.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Wed, 07 Jun 2006 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/51020.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/51020.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/51020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/51020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/51020.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="4" width="464" border="0">
				<tbody>
						<tr>
								<td valign="center" align="left" bgcolor="#ebebeb">
										<font size="2">
												<font class="blogtitle">
														<strong>安裝篇</strong>
												</font>
										</font>
								</td>
								<td valign="bottom" align="right" bgcolor="#ebebeb">
										<font class="date" face="Verdana" color="#e5571d" size="2">(01-05-2003)</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table cellspacing="0" cellpadding="3" width="444" border="0">
				<tbody>
						<tr>
								<td colspan="2">
										<font face="Verdana" color="#e5571d" size="2">
												<img height="5" src="http://www.luar.com.hk/flashbook/images/blank.gif" width="10" border="0" />
										</font>
								</td>
						</tr>
						<tr valign="top" align="left">
								<td class="blogbody" colspan="2">
										<p>
												<font size="2">當你安裝FlashCom 1.0試用版或者真正版本(Personal或Professional)時，安裝程序會問你安裝Development模式或者Production模式。在解釋兩者分別前，先認識5點：</font>
										</p>
										<p>
												<font size="2">
														<u>FlashCom Application結構</u>
														<br />一個FlashCom Application分為Client Presentation及Application Files兩部分，前者就是被網民可以看到的部分，即是HTML和swf文件，後者就是在Server裡對這個FlashCom Application的設定(main.asc)、Server-side ActionScript、Shared Objects、FLV影片等。</font>
										</p>
										<p>
												<font size="2">
														<u>FlashCom Application跟FlashCom聯繫方法</u>
														<br />一般網頁，是通過HTTP跟Server聯繫，但是FlashCom Application跟FlashCom聯繫是不用經HTTP，它是自定一個Protocol叫RTMP，因此你可以直接用Flash Player看FlashCom Application，都可以連到FlashCom去，這只限於Local機製作時，當你完成FlashCom Application，要廣大的人看到你的心血，你要將Client Presentation(即是HTML和swf文件)的部分放在Web Server中，別人通過Browser看到你那個FlashCom Application的Flash影片，Flash影片暗地裡就是用RTMP跟FlashCom聯繫。</font>
										</p>
										<p>
												<font size="2">
														<u>Client Presentation及Application Files放置Folder</u>
														<br />顧名思義，Client Presentation要放在Web Server放網頁的地方，Windows的IIS就是Inetpub\wwwroot，Unix/Linux通常是usr\yourName\public_html。Application Files必須放在你安裝FlashCom的Folder下一個叫applications的地方(例如：C:\Program Files\Macromedia\Flash Communication Server MX\applications)，每個FlashCom Application都必須在applications下建立自己的Folder。</font>
										</p>
										<p>
												<font size="2">
														<u>Development模式的作用</u>
														<br />通常Flash Developer都喜歡將fla和swf放在deploy的地方，經常Ctrl+Enter進行測試，Development模式就是將那個applications的地方都搬到Web Server下(Inetpub\wwwroot\FlashCom\applications)，方便你進行測試。</font>
										</p>
										<p>
												<font size="2">
														<u>Production模式的作用</u>
														<br />即是Deploy的情形，你的作品已經完成，可以公布天下，叫所有人來看你的作品，但是將Application Files放在Web Server裡，人家就有機會偷取你的設定、源文件、Shared Object，因此Production模式就是要將applications放在FlashCom的Folder下，即C:\Program Files\Macromedia\Flash Communication Server MX\applications。</font>
										</p>
										<p>
												<font size="2">
														<u>補充</u>
														<br />FlashCom 1.5提供的Developer Edition免費版本，安裝時自動以Production模式去安裝。</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/51020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-07 09:30 <a href="http://www.blogjava.net/sl2cj/articles/51020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash 8 摄像头拍照  </title><link>http://www.blogjava.net/sl2cj/articles/50715.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 06 Jun 2006 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50715.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50715.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50715.html</trackback:ping><description><![CDATA[
		<strong>
				<font size="2">Flash 8 摄像头拍照 </font>
		</strong>
		<table class="docParameter" cellspacing="6" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2">作者：</font>
												<a href="http://www.blueidea.com/common/contact.asp?type=作者&amp;username=hawkOnFlying" target="_blank">
														<font size="2">hawkOnFlying</font>
												</a>
												<font size="2">　时间： 2005-12-28　文档类型：原创　来自：</font>
												<a href="http://www.blueidea.com/">
														<font size="2">蓝色理想</font>
												</a>
												<font size="2">
														<br />浏览统计 total:7345 | year:5785 | Quarter:1482 | Month:108 | Week:46 | today:9</font>
										</p>
										<p class="list">
												<font size="2">
												</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="border" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<font size="2">
												<img height="6" src="http://www.blueidea.com/img/spacer.gif" width="6" />
										</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="pageLighter" cellspacing="11" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="content">
										<p>
												<font size="2">前几天帮朋友做一个东西用到的 code ，因为很久不做 Flash coding 了。所以也就很少关心 Flash 8 的新的 Calss。但听大家说过有这个功能。本想从网上找段教程或 code 来做。可是发现国内还没有类似的。就只能自己动手丰衣足食了。</font>
										</p>
										<p>
												<font size="2">
														<strong>开始做法：<br /></strong>第一步：在库中建立一个视频元件，类型选择：视频(受 ActionScript 控制)。<br />第二步：将视频元件拖到场景中，并调整尺寸到想要的大小。并起名为“my_video”<br />第三步：在时间轴中粘入下边的 code ：</font>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
												</span>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">var my_video:Video;<br />my_video._x=100;<br />my_video._y=40;<br />var my_cam:Camera = Camera.get();<br />my_cam.setMode(180, 140, 10, true);<br />my_video.attachVideo(my_cam);</font>
										</p>
										<p>
												<font size="2">shutter.onRelease = function() {<br /> myBitmap = new flash.display.BitmapData(180, 240, true, 0);<br /> myBitmap.draw(my_video);<br /> var tempObj = _root.createEmptyMovieClip("photo", 100);<br /> tempObj._x = 300;<br /> tempObj._y = 40;<br /> tempObj.attachBitmap(myBitmap, 1, "always", true);<br />};</font>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">Testing 发现有问题，拍出来照片只有 160x120 的区域有图像。并且图像变形了。</font>
										</p>
										<p>
												<strong>
														<font size="2">什么地方出了问题呢？</font>
												</strong>
										</p>
										<p>
												<font size="2">最后发现 my_video 复制到场景中调整大小时并不是改变 my_video.width 及 my_video.height 属性，而是改变 my_video._width 及 my_video._height 属性。原有视频元件的尺寸只有 160x120 。这就相当于将 my_video 作了形变。而 BitmapData.draw() 是不会考虑源元件的形变的。<strong>官方的说法是：</strong><strong>源 MovieClip 对象不对此调用使用其任何舞台中转换。该源 MovieClip 对象会被视为存在于库或文件中，没有矩阵转换、没有颜色转换，也没有混合模式。如果您希望通过使用影片剪辑自身的 transform 属性来绘制影片剪辑，则可以使用它的 Transform 对象来传递各种 transformation 属性。</strong></font>
										</p>
										<p>
												<font size="2">我开始没注意他给出的解决办法。我想既然 draw() 不考虑源元件的形变，那只能自己在输出的照片元件上想办法做形变了。于是有了下面这段 code ： </font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
												</span>
										</p>
										<p>
												<font size="2">var my_video:Video;<br />my_video._x=100;<br />my_video._y=40;<br />var my_cam:Camera = Camera.get();<br />my_cam.setMode(180, 140, 10, true);<br />my_video.attachVideo(my_cam);</font>
										</p>
										<p>
												<font size="2">shutter.onRelease = function() {<br /> myBitmap = new flash.display.BitmapData(160, 120, true, 0);<br /> myBitmap.draw(my_video);<br /> var tempObj = _root.createEmptyMovieClip("photo", 100);<br /> tempObj._x = 300;<br /> tempObj._y = 40;<br /> tempObj._width= 180;<br /> tempObj._height = 240;<br /> tempObj.attachBitmap(myBitmap, 1, "always", true);<br />};</font>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">这下照片是想要的大小了，而且图像也没有了变形。但发现图像没有摄像头显示的清晰。<br />想了一下，那是当然，draw() 不考虑源元件的形变，draw时my_video 被当作 160x120 来draw了。<br />那能不能通过改变 my_video.width 及 my_video.height 属性来改变 my_video 的尺寸而不是将 my_video 作形变呢？不能！！！my_video.width 及 my_video.height 属性是只读属性。</font>
										</p>
										<p>
												<font size="2">
														<strong>解决方法：<br /></strong>第一步：用视频编辑软件制作一个 180x240 尺寸的1贞的白色 mov 视频文件。<br />第二步：用 Macromedia Flash 8 Video Encoder 将mov视频文件转为 flv 视频文件。<br />第三步：在库中建立一个视频元件，类型选择：嵌入(与时间轴同步)。<br />第四步：将视频元件拖到场景中，并起名为“my_video”Testing 发现 my_video.width 及 my_video.height 属性为 180x120 。<br />第五步：在时间轴中粘入下边的 code ：</font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
														<p>
																<font size="2">var my_video:Video;<br />my_video.clear()<br />my_video._x=100;<br />my_video._y=40;<br />var my_cam:Camera = Camera.get();<br />my_cam.setMode(180, 140, 10, true);<br />my_video.attachVideo(my_cam);</font>
														</p>
														<p>
																<font size="2">shutter.onRelease = function() {<br /> myBitmap = new flash.display.BitmapData(160, 120, true, 0);<br /> myBitmap.draw(my_video);<br /> var tempObj = _root.createEmptyMovieClip("photo", 100);<br /> tempObj._x = 300;<br /> tempObj._y = 40;<br /> tempObj._width= 180;<br /> tempObj._height = 240;<br /> tempObj.attachBitmap(myBitmap, 1, "always", true);<br />};</font>
														</p>
												</span>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">好了，现在所有问题都解决了。</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-06 12:00 <a href="http://www.blogjava.net/sl2cj/articles/50715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlashCom中的主要对象和组件</title><link>http://www.blogjava.net/sl2cj/articles/50326.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 12:17:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50326.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50326.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50326.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FlashCom中的主要对象和组件																FlashCom中的主要对象和组件 FlashCom中主要的内置对象有：1 Camera （摄像机）对象：获取摄像机的影像和设定影像的品质。2 Video（视讯）对象：显示从摄像机获取或者flashcom服务器播放的影像。3 Microphone（麦克风）对象：取得麦克风的声音来源和相关设定。4 SharedOb...&nbsp;&nbsp;<a href='http://www.blogjava.net/sl2cj/articles/50326.html'>阅读全文</a><img src ="http://www.blogjava.net/sl2cj/aggbug/50326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 20:17 <a href="http://www.blogjava.net/sl2cj/articles/50326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCS camera对象的使用这一节主要讲述camera对象的使用，包括camera的使用优化、设置合适的带宽和如果使得一个camera用于多个应用程序。</title><link>http://www.blogjava.net/sl2cj/articles/50323.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50323.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50323.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50323.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50323.html</trackback:ping><description><![CDATA[
		<strong>FCS camera对象的使用</strong>
		<div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">
				<span id="zoom">这一节主要讲述camera对象的使用，包括camera的使用优化、设置合适的带宽和如果使得一个camera用于多个应用程序。<br />Camera对象允许你从摄影机捕捉视频并追加到任何一个MC中，当使用FlashMx Com server的时候，还可以在联机对象间传输、显示，甚至录制捕捉到的视频。应用这个特性，你可以开发例如视频会议、视频聊天等应用程序。当然你也可以不通过服务器来使用Camera对象，例如可以捕捉你的视频并附加到某个MC。<br /><strong>Camera常用的属性：</strong><br /><div id="code"><div style="MARGIN-LEFT: 5pt"><code><ol>  
<li><span style="COLOR: #000000"><span style="COLOR: #0000cc">bandWidth 每秒种传送的最大字节数<br />  
<li>currentFps 当前传送的fps值<br />  
</li><li>fps setMode方法设定的fps值<br />  
</li><li>name 当前使用的摄像机名称<br />  
</li><li>names 可用视频捕捉设备的数组<br />  
</li><li>index 可以视频设备的索引值<br />  
</li><li>keyFrameInterval 关键帧间隔<br />  
</li><li>loopback 是否压缩影像<br />  
</li><li>motionLevel 灵敏度0～100 数值越高动作越迟钝<br /></li><li>width 影像的宽度<br /></li><li>height 影像的高度<br /></li><li>quality 传送的影像品质0～100<br /></li><li>muted 客户端是否允许Flash取用本地端的摄像机 <br /></li></span></span></li><li>currentFps 当前传送的fps值<br />  
</li><li>fps setMode方法设定的fps值<br />  
</li><li>name 当前使用的摄像机名称<br />  
</li><li>names 可用视频捕捉设备的数组<br />  
</li><li>index 可以视频设备的索引值<br />  
</li><li>keyFrameInterval 关键帧间隔<br />  
</li><li>loopback 是否压缩影像<br />  
</li><li>motionLevel 灵敏度0～100 数值越高动作越迟钝<br /></li><li>width 影像的宽度<br /></li><li>height 影像的高度<br /></li><li>quality 传送的影像品质0～100<br /></li><li>muted 客户端是否允许Flash取用本地端的摄像机 <br /></li></ol></code><br /></div></div><br /><br />需要创建Camera对象，使用下面代码：<br /><div id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : MyCamera = Camera.get();<br /><font color="#999966">2</font> : <font color="#669966">//如果有多个视频设备，请使用index（索引值）指定设备</font><br /><font color="#999966">3</font> : MyCamera = Camera.get(index);<br /><font color="#999966">4</font> : </div></div><br />如果在不同的网域访问，就会弹出窗口让用户确认使用或是拒绝使用：<br /><div align="center"><a href="http://blog.liu21st.com/up/1090592095.gif" target="_blank"><img style="CURSOR: pointer" onclick="" alt="图片点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090592095.gif" onload="imgresize(this);" border="0" /></a></div><br />当用户对弹出窗口响应后就会触发onStatus事件，请参考muted参数<br />当然也可以记住用户的选择，点击鼠标右键出现设置窗口<br /><div align="center"><a href="http://blog.liu21st.com/up/1090592463.gif" target="_blank"><img style="CURSOR: pointer" onclick="" alt="图片点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090592463.gif" onload="imgresize(this);" border="0" /></a></div><br />在该窗口选择允许，并选中记住，下次就不会弹出确认窗口了。<br />更高级的示例是弹出设备选择窗口让用户选择：<br /><div id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : camArray = Camera.names;<br /><font color="#999966">2</font> : <font color="#ff9900">if</font> (camArray.length == 1){ <br /><font color="#999966">3</font> : Camera.get();<br /><font color="#999966">4</font> : }<br /><font color="#999966">5</font> : <font color="#ff9900">else</font><br /><font color="#999966">6</font> : System.showSettings(3);//弹出视频设置窗口<br /><font color="#999966">7</font> : Camera.get();</div></div><br /><div align="center"><a href="http://blog.liu21st.com/up/1090594226.gif" target="_blank"><img style="CURSOR: pointer" onclick="" alt="图片点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090594226.gif" onload="imgresize(this);" border="0" /></a></div><br /><br />Flashcomguru 的 arckid 提供了一个很好的检测Camera的方法，把它略作修改如下<br /><div id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">01</font> : <font color="#ff9900">function</font> checkforCam() { <br /><font color="#999966">02</font> : camArray = Camera.names; <br /><font color="#999966">03</font> : <font color="#ff9900">if</font> (camArray.length &gt;= 1){ <br /><font color="#999966">04</font> : temp_cam = Camera.get(); <br /><font color="#999966">05</font> : if(temp_cam == -1) <br /><font color="#999966">06</font> : trace('视频设备正忙'); <br /><font color="#999966">07</font> : <font color="#ff9900">else</font><br /><font color="#999966">08</font> : trace('视频设备可用'); <br /><font color="#999966">09</font> : <font color="#ff9900">delete</font> temp_cam; <br /><font color="#999966">10</font> : } <font color="#ff9900">else</font><font color="#ff9900">if</font> (camArray.length == 0) { <br /><font color="#999966">11</font> : trace('没有视频设备'); <br /><font color="#999966">12</font> : } <br /><font color="#999966">13</font> : } <br /><font color="#999966">14</font> : <font color="#669966">//-----------------------------------------------------------------</font><br /><font color="#999966">15</font> : <font color="#669966">//或者下面的函数更精简：</font><br /><font color="#999966">16</font> : <font color="#ff9900">function</font> checkForCam(){ <br /><font color="#999966">17</font> : <font color="#ff9900">return</font> Camera.names.length; <br /><font color="#999966">18</font> : }<br /><font color="#999966">19</font> : <font color="#ff9900">function</font> isCamBusy(){ <br /><font color="#999966">20</font> : if(arguments.length) <font color="#ff9900">return</font> Camera.get(arguments[0]) == -1; <br /><font color="#999966">21</font> : <font color="#ff9900">return</font> Camera.get() == -1; <br /><font color="#999966">22</font> : } <br /><font color="#999966">23</font> : </div></div><br /><br /></span>
		</div>
		<div class="postbottom1">
				<div class="postuserinfo" style="HEIGHT: 28px">
						<div style="FLOAT: left">
								<img style="MARGIN: 4px" alt="ip地址已设置保密" src="http://bbs.helpcms.com/skins/Default/ip.gif" />
						</div>2006-2-28 13:03:12</div>
				<div class="postie" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px">
						<div style="FLOAT: right; MARGIN-RIGHT: 5px">
								<a href="http://bbs.helpcms.com/dispbbs.asp?boardid=4&amp;id=275#top">
										<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px" alt="" src="http://bbs.helpcms.com/skins/Default/p_up.gif" />
								</a>
						</div>
						<div>
						</div>
				</div>
		</div>
		<a name="334">
		</a>
		<div class="postlary2">
				<div class="postuserinfo">
						<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px">
								<div style="FILTER: glow(color='#9898BA',strength='2'); FLOAT: left; WIDTH: 120px">
										<font face="Verdana" color="#da2549">
												<b>netfound</b>
										</font>
								</div>
								<div style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px">
										<img alt="帅哥哟，离线，有人找我吗？" src="http://bbs.helpcms.com/skins/Default/ofMale.gif" />
								</div>
								<div style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px">
										<script language="javascript" type="text/javascript"><![CDATA[ocument.write (astro(''));]]&gt;</script>
								</div>
						</div>
						<div>
								<img height="32" alt="" src="http://bbs.helpcms.com/Images/userface/image59.gif" width="32" />
						</div>
						<div>
								<img style="MARGIN: 5px 0px" src="http://bbs.helpcms.com/skins/Default/star/level19.gif" />
						</div>
						<div>头衔：CMS服务者</div>
						<div>等级：超级版主</div>
						<div>文章：407</div>
						<div>积分：4438</div>
						<div>门派：无门无派</div>
						<div>注册：2006年2月6日</div>
				</div>
				<div class="postie">
						<div>
								<div style="FLOAT: right">第 <font color="red">2</font> 楼</div> <a href="https://www.alipay.com/payto:netfound@hotmail.com&amp;partner=2088002048522272" target="_blank"><img alt="用支付宝给netfound付款或购买其商品，支付宝交易免手续费、安全、快捷！" src="http://bbs.helpcms.com/skins/Default/alipay_s.gif" align="middle" border="0" /></a><a href="mailto:netfound@hotmail.com"><img alt="点击这里发送电子邮件给netfound" src="http://bbs.helpcms.com/skins/Default/email.gif" align="middle" border="0" /></a></div>
						<hr />
						<div style="LINE-HEIGHT: 22px; HEIGHT: 22px">
								<div style="FLOAT: left">
										<img alt="发贴心情" src="http://bbs.helpcms.com/skins/Default/topicface/face1.gif" />
								</div>
								<b>
								</b>
						</div>
						<div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">要设置Camera对象的模式，可以用setMode()方法，如下：<br /><div id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : MyCamera.setMode(width, height, fps [, favorSize])<br /><font color="#999966">2</font> : <font color="#669966">//width,height 是Camera对象宽高，默认值是160×120</font><br /><font color="#999966">3</font> : <font color="#669966">//fps 捕捉视频的速率 默认值是15</font><br /><font color="#999966">4</font> : <font color="#669966">//favorSize 是一个可选的布尔值，默认为true，表示采用最大匹配当前的窗口大小的速率，如果设为false，则会优先考虑影像的流畅度。</font></div></div><br /><strong>不同带宽的建议设置</strong><br />默认的Camera设置对所有的带宽提供了一个相同的足够好的传输品质，如果需要手动设置以适应不同的带宽要求，设置Camera参数的方法如下：<br /><div id="code"><code><div style="MARGIN-LEFT: 5pt"><ol><li><span style="COLOR: #000000"><span style="COLOR: #0000cc">MyCamera</span><span style="COLOR: #006600">.</span><span style="COLOR: #0000cc">setQuality</span><span style="COLOR: #006600">(</span><span style="COLOR: #0000cc">bandwidth</span><span style="COLOR: #006600">, </span><span style="COLOR: #0000cc">frameQuality</span><span style="COLOR: #006600">)<br /><li><span style="COLOR: #ff9900">//bandwidth 频宽指每秒传送的最大字节数 默认为16384 如果设为0则维持frameQuality设定的影像品质，尽量使用最大频宽<br /><li>//freamQuality 影像的压缩品质1～100，设为0表示在bandwidth设定范围内自动调整影像品质<br /><p> </p></li></span></li></span><span style="COLOR: #ff9900">//bandwidth 频宽指每秒传送的最大字节数 默认为16384 如果设为0则维持frameQuality设定的影像品质，尽量使用最大频宽<br /><li>//freamQuality 影像的压缩品质1～100，设为0表示在bandwidth设定范围内自动调整影像品质<br /><p> </p></li></span></span></li><li><span style="COLOR: #ff9900">//bandwidth 频宽指每秒传送的最大字节数 默认为16384 如果设为0则维持frameQuality设定的影像品质，尽量使用最大频宽<br /><li>//freamQuality 影像的压缩品质1～100，设为0表示在bandwidth设定范围内自动调整影像品质<br /><p> </p></li></span></li><li>//freamQuality 影像的压缩品质1～100，设为0表示在bandwidth设定范围内自动调整影像品质<br /></li></ol></div><p> </p></code><font face="宋体, MS Song"> </font></div></div>
				</div>
		</div>
		<div class="postbottom2">
				<div class="postuserinfo" style="HEIGHT: 28px">
						<div style="FLOAT: left">
								<font face="宋体, MS Song">
										<img style="MARGIN: 4px" alt="ip地址已设置保密" src="http://bbs.helpcms.com/skins/Default/ip.gif" />
								</font>
						</div>2006-2-28 13:04:57</div>
				<div class="postie" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px">
						<div style="FLOAT: right; MARGIN-RIGHT: 5px">
								<a href="http://bbs.helpcms.com/dispbbs.asp?boardid=4&amp;id=275#top">
										<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px" alt="" src="http://bbs.helpcms.com/skins/Default/p_up.gif" />
								</a>
						</div>
						<div>
						</div>
				</div>
		</div>
		<a name="335">
		</a>
		<div class="postlary1">
				<div class="postuserinfo">
						<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px">
								<div style="FILTER: glow(color='#9898BA',strength='2'); FLOAT: left; WIDTH: 120px">
										<font face="Verdana" color="#da2549">
												<b>netfound</b>
										</font>
								</div>
								<div style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px">
										<img alt="帅哥哟，离线，有人找我吗？" src="http://bbs.helpcms.com/skins/Default/ofMale.gif" />
								</div>
								<div style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px">
										<script language="javascript" type="text/javascript"><![CDATA[ocument.write (astro(''));]]&gt;</script>
								</div>
						</div>
						<div>
								<img height="32" alt="" src="http://bbs.helpcms.com/Images/userface/image59.gif" width="32" />
						</div>
						<div>
								<img style="MARGIN: 5px 0px" src="http://bbs.helpcms.com/skins/Default/star/level19.gif" />
						</div>
						<div>头衔：CMS服务者</div>
						<div>等级：超级版主</div>
						<div>文章：407</div>
						<div>积分：4438</div>
						<div>门派：无门无派</div>
						<div>注册：2006年2月6日</div>
				</div>
				<div class="postie">
						<div>
								<div style="FLOAT: right">第 <font color="red">3</font> 楼</div> <a href="https://www.alipay.com/payto:netfound@hotmail.com&amp;partner=2088002048522272" target="_blank"><img alt="用支付宝给netfound付款或购买其商品，支付宝交易免手续费、安全、快捷！" src="http://bbs.helpcms.com/skins/Default/alipay_s.gif" align="middle" border="0" /></a><a href="mailto:netfound@hotmail.com"><img alt="点击这里发送电子邮件给netfound" src="http://bbs.helpcms.com/skins/Default/email.gif" align="middle" border="0" /></a></div>
						<hr />
						<div style="LINE-HEIGHT: 22px; HEIGHT: 22px">
								<div style="FLOAT: left">
										<img alt="发贴心情" src="http://bbs.helpcms.com/skins/Default/topicface/face1.gif" />
								</div>
								<b>
								</b>
						</div>
						<div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">
								<p> 下面对不同的带宽给出了建议设置：<br /> <br />[ Modem  ]<br /> <br />较低画质，较高动作流畅度 my_cam.setQuality(4000,0)<br /> <br />较高画质，较低动作流畅度 my_cam.setQuality(0,65)<br /> <br />[ DSL ]<br /> <br />较低画质，较高动作流畅度 my_cam.setQuality(12000,0)<br /> <br />较高画质，较低动作流畅度 my_cam.setQuality(0,90)<br /> <br />[ LAN ]<br /> <br />较低画质，较高动作流畅度 my_cam.setQuality(400000,0)<br /> <br />较高画质，较低动作流畅度 my_cam.setQuality(0,100) </p>
								<p>
										<br />打开和设置完Camera之后后要附加到一个视频实体才可以显示<br />MyVideo.attachVideo(MyCamera); </p>
								<p> </p>
								<p>正常关闭camera<br />如果你的应用程序使用camera对象和NetStream对象记录数据，camera仍然保持打开状态，为了确保关闭Camera对象，请在结束的时候使用<br />NetStream.attachVideo(false) </p>
								<p> </p>
								<p>在多个应用程序中使用同一个Camera<br />多个应用程序（swfs）可以在同时使用一个Camera。一般而言，多个浏览器窗口使用相同的进程，所以在浏览器环境中多个应用程序可以正常使用同一个Camera。但是，如果一个是在浏览器中运行，一个是独立应用程序，就不能共享使用同一个Camera，因为Camera不能被多个进程共享。</p>
								<p>事件响应<br />在Camera有两个重要的事件响应<br />1. onStatus事件 muted属性变化会触发该事件<br />原参考手册中的一个示例可以说明onstatus的用法<br />01 : myCam = Camera .get ();<br />02 : myVideoObject.attachVideo(myCam);<br />03 : myCam.onStatus = function ( infoMsg ) { <br />04 : if ( infoMsg.code == 'Camera.Muted' )<br />05 : { <br />06 : trace ( 'User denies access to the camera' );<br />07 : }<br />08 : else<br />09 : trace ( 'User allows access to the camera' );<br />10 : }<br />11 : // Change the Allow or Deny value to invoke the function<br />12 : System .showSettings(0);</p>
								<p>2. onActivity事件 视频是否活动的事件响应<br />请参考原手册的范例：<br />1 : // Assumes a Video object named 'myVideoObject' is on the Stage<br />2 : c = Camera.get();<br />3 : myVideoObject.attachVideo(c);<br />4 : c.setMotionLevel(10, 500);<br />5 : c.onActivity = function (mode)<br />6 : { <br />7 : trace(mode);<br />8 : };</p>
						</div>
				</div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 20:08 <a href="http://www.blogjava.net/sl2cj/articles/50323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flash与后台数据交换方法整理5-FlashCom（FMS）篇Submitted by kinglong on 2006-3-13 15:43:14五、FlashCom（FMS）</title><link>http://www.blogjava.net/sl2cj/articles/50241.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50241.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50241.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50241.html</trackback:ping><description><![CDATA[
		<a href="http://www.klstudio.com/post/58.html">flash与后台数据交换方法整理5-FlashCom（FMS）篇</a>
		<div class="meta">
				<small>Submitted by kinglong on 2006-3-13 15:43:14</small>
		</div>
		<!-- Node content -->
		<div class="content">
				<p>五、FlashCom（FMS）</p>
				<p>这一篇是前四个（<a href="http://www.klstudio.com/post/49.html">LoadVars(XML)</a>、<a href="http://www.klstudio.com/post/50.html">Flash Remoting</a>、<a href="http://www.klstudio.com/post/56.html">Webservice</a>、<a href="http://www.klstudio.com/post/57.html">XMLSocket</a>）的补充篇，本来我没有考虑进去，因为FlashCom（FMS）主要用于流媒体技术，今天要感谢<a href="http://www.dengjie.com/weblog/comments.asp?post_id=1117">Danger</a>提出来了，呵呵，今天心情不错，就一气合成了！</p>
				<p>FlashCom（FMS）主要用于与服务端进行流媒体通信，目前应用领域就是<strong>Flash流媒体播放</strong>，<strong>Flash在线直播</strong>，<strong>Flash视频音频聊天</strong>，<strong>Flash视频会议</strong>，<strong>Flash在线游戏</strong>等。</p>
				<p>
						<strong>FlashCom的运行环境</strong>(<a href="http://www.macromedia.com/cn/software/flashmediaserver/productinfo/systemreqs/" target="_blank">FMS的运行环境</a>)：<br /><br />1、Windows操作系统：Windows 2000 Server或者Windows NT 4.0 Server（sp6）；<br />2、Linux操作系统：Red Hat Linux 7.3 或者 8.0；<br />3、服务器的CPU是Pentium III 500 MHz或者更高（推荐值是双个Pentium 4 CPU）；<br />4、服务器的内存是256M RAM 或者更高（推荐值是512M）。</p>
				<p>
						<strong>FlashCom（FMS）的优点</strong>：<br />1、能够实现即时视频音频通信（当然它也支持文本通信的）；<br />2、能够流媒体同步播放（也叫在线直播）；<br />3、能够通过Flash Player（6.0以上版本）录制视频音频，无需其他客户端；<br />4、能够实现客户端实现之间的控制（如会议主持人权限）。</p>
				<p>
						<strong>FlashCom（FMS）的缺点</strong>：<br />1、FlashCom（FMS）服务端软件是<a href="http://www.macromedia.com/">MM公司</a>的产品，需要花银子去买的（一笔不小的投入），好在现在有一个正在完善中的开源项目——<a href="http://www.osflash.org/red5#project_goals_mission">RED5</a>；<br />2、由于是流媒体服务端软件，所以对服务器的带宽，内存，以及CPU也是很高的要求的（上面已经作说明了）；<br />3、同时在线视频通信的人数不能太多。</p>
				<table cellspacing="1" cellpadding="1" width="100%" border="0">
						<tbody>
								<tr>
										<td>//=======================================;<br />//<em> Flash客户端（以简单的在线录制视频为例）</em><br />//=======================================;<br />stop();<br />var nc:NetConnection = new NetConnection();<br />var ns:NetStream;<br />var cam:Camera = Camera.get();<br />var mic:Microphone = Microphone.get();<br />//<em>预览本地摄像头视频</em>;<br />video_box.attachVideo(cam);<br />//<em>初始化NetStream</em>;<br />function initNetStream():Void {<br />ns = new NetStream(nc);<br />//<em>设置2秒的缓冲时间</em>;<br />ns.setBufferTime(2);<br />//<em>使用NetStream加载视频和音频对象</em>;<br />ns.attachVideo(cam);<br />ns.attachAudio(mic);<br />//<em>NetStream状态信息</em>;<br />ns.onStatus = function(info:Object) {<br />trace("ns.onStatus:"+info.code);<br />};<br />}<br />//<em>录制视频音频</em>;<br />function recordStream(){<br />ns.publish("kinglong","record");<br />}<br />//<em>停止录制</em>;<br />function stopStream(){<br />ns.close();<br />}<br />//<em>删除视频音频文件</em>;<br />function deleteStream(){<br />nc.call("clearStream",null,"kinglong");<br />}<br />//<em>NetConnection状态信息</em>;<br />nc.onStatus = function(info:Object) {<br />trace("nc.onStatus:"+info.code);<br />switch (info.code) {<br />case "NetConnection.Connect.Success" :<br />initNetStream();<br />break;<br />}<br />};<br />//<em>连接FlashCom服务器</em><br />nc.connect("rtmp:/"+"recordstream");</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<br />
				<table cellspacing="1" cellpadding="1" width="100%" border="0">
						<tbody>
								<tr>
										<td>//=======================================;<br />// <em>FlashCom（FMS）服务端代码</em><br />//<em>将下列代码存成main.asc文件（此文件名固定），在FlashCom的applications目录下建立一个recordstream目录（对应着客户端的”recodstream”），并将main.asc放在这个目录中。</em><br />//=======================================;<br />application.onAppStart = function(){<br />}<br />application.onAppStop = function(){<br />}<br />application.onConnect = function(client){<br />application.acceptConnection(client);<br />}<br />application.onDisconnect = function(client){<br />}<br />//=======================================;<br />//<em>获取flv文件时间长度</em>；<br />function getStreamLength(name) {<br />return Stream.length(name);;<br />}<br />//=======================================;<br />//<em>删除flv文件</em>；<br />function clearStream(name) {<br />trace("clearStream("+name+");");<br />var stream = Stream.get(name);<br />return stream.clear();<br />}<br />//=======================================;<br />//<em>设置Client.prototype</em>;<br />//=======================================;<br />Client.prototype.getStreamLength = getStreamLength;<br />Client.prototype.clearStream = clearStream;</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 11:40 <a href="http://www.blogjava.net/sl2cj/articles/50241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主题: [asp]直接保存URL图像或网页到服务器本地的类~~ </title><link>http://www.blogjava.net/sl2cj/articles/50235.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50235.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50235.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50235.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 主题: [asp]直接保存URL图像或网页到服务器本地的类~~																																																V37雨梦秋风积分：5555发贴：1670来自：任何地方注册：2001-12-01 																																												返回页首 | 楼层：1		...&nbsp;&nbsp;<a href='http://www.blogjava.net/sl2cj/articles/50235.html'>阅读全文</a><img src ="http://www.blogjava.net/sl2cj/aggbug/50235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 11:23 <a href="http://www.blogjava.net/sl2cj/articles/50235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]flash asp大头贴出现杂点的解决全过程</title><link>http://www.blogjava.net/sl2cj/articles/50232.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50232.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50232.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50232.html</trackback:ping><description><![CDATA[
		<h1 class="ContentTitle">
				<strong>[转载]flash asp大头贴出现杂点的解决全过程</strong>
		</h1>
		<h2 class="ContentAuthor">作者:luke 日期:2006-04-22</h2>
		<div class="Content-Info">
				<div class="InfoOther">字体大小: <a accesskey="1" href="javascript:SetFont('12px')">小</a><a accesskey="2" href="javascript:SetFont('14px')">中</a><a accesskey="3" href="javascript:SetFont('16px')">大</a></div>
				<div class="InfoAuthor">
						<img style="MARGIN: 0px 2px -6px 0px" alt="" src="http://www.sun-sky.cn/images/weather/hn2_sunny.gif" />
						<img alt="" src="http://www.sun-sky.cn/images/weather/hn2_t_sunny.gif" />
						<img style="MARGIN: 0px 2px -1px 0px" alt="" src="http://www.sun-sky.cn/images/level3.gif" />
				</div>
		</div>
		<div class="Content-body" id="logPanel">//从闪吧转的<br /><br />前几天在网上找了一下flash ASP的大头贴程序 <br />用后普遍存在杂点的现象。 <br />在网上也咨询过相关程序编写的作者 有的已经发现并改进但是并不向外发布（只做商业使用），而网上又无法查找到相关解决办法 <br />几经 寻觅帮助最后 认识了 闪吧中的 笨耗子 （只不过他做的是PHP），经他提点 说是 flash丢色问题。 <br />于是 研究了一下他的flash代码 原以为是 if(pix == 0xFFFFFF) pixer = ""; // don’t send blank pixel <br />的问题，可是当我在我的flash中也加入此代码后 问题依旧存在。 <br />今日 下定决心好好研究研究 （用于调试的代码比较多 这里只提一下我的思路） <br />1 在flash 中 加入 一个变量 用于存储 getPixel获取的所有像素值 并将其输出到flash中的一个 textarea组件中//用于以后比较判断 <br />2 在asp的处理部分 对从flash传来的数据 写入文件 同时输出一行“＝” 再 将 经过10进制转换后的 内容也写入文件 //用于比较调试 <br />经过比较 发现flash到asp 以及asp 转换 均未出错！！ 下面是 用来比较的文件的内容 <br /><br /><a title="在新窗口打开图片" href="http://www.sun-sky.cn/attachments/month_0604/e200642210482.jpg" target="_blank"><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/e200642210482.jpg" width="500" border="0" /></a><br /><br />郁闷中！！！！ <br />后来 用取色软件 对拍到的图片中的杂色 进行分析 （cef30b） 把他按照 从右到左两位一转换的方法转为10进制后 就会得到 像上图中 <br />xxx-xxx-xxx的形式 然后在上面用来测试的 文件中找到和此内容相同的一行 你会发现等号右边的数据不是6位的 只有5位（呵呵 我想就应该是这个原因） <br /><br />于是回到flash中 加入if(pixer.length&lt;6)pixer="0"+pixer; //我认为应该是加”0" 因为对于像素这方面我不太了解 但计算机一般会略去0 所以我加的是”0" <br />测试 发现杂点没有了 <br />用网上的 程序拍摄的 有杂点 <br /><br /><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/92006422104850.jpg" border="0" /><br /><br />修改后的 <br /><br /><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/e2006422104915.jpg" border="0" /><br /><br />好了 就说到这里了<br />在下也是初学 也不敢保证以上说的 没有错误 望谅解 <br /></div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 11:15 <a href="http://www.blogjava.net/sl2cj/articles/50232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLASH大头贴 FLASH部分源程序解析 </title><link>http://www.blogjava.net/sl2cj/articles/50213.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50213.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50213.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50213.html</trackback:ping><description><![CDATA[
		<div class="right-title-n">
				<h1>FLASH大头贴 FLASH部分源程序解析 </h1>
		</div>
		<div class="content-700">
				<div class="content-f">　　    原来有几个前辈贴过了一些关于这个技术的代码，有JAVA的，也有FLASH COM的。现在我把FLASH部分通过摄象头获得图象信息的代码贴出来。供大家参考。 <br />    这段代码是我参考了别人的代码自己写出来的。原来的那个网站里总共提供了两个类来实现这个问题。估计贴出来大多数人也会看的眼花缭乱不知所以（其实我也没太看明白）。所以按原来程序的思路自己重新写了一部分。大多数语句都写了注释。如果大家有什么不明白的，欢迎跟贴讨论<br />    注意：本程序需要Video的支持。具体添加办法请搜索FLASH8帮助（这个东西是FLASH库本身自带的） 
<div class="HtmlCode">/*FLASH大头贴原程序 <br />/*程序编写：Benmouse 2005-12-01 <br />import flash.display.BitmapData; //要应用这个对象。。必须要包含一下 <br /><br />myCrame=Camera.get();      //创建摄象头对象 <br />myVideo.attachVideo(myCrame);   //显示视频 <br />var imger:BitmapData = new BitmapData(myVideo._width, myVideo._height, false); <br />imgShow.attachBitmap(imger, this.getNextHighestDepth(), "auto", true); <br />var thehang:Number=0; <br />var ID:Number; <br />var PX:Array=new Array(); <br />btn1.onRelease=function() <br />{ <br /> imger.draw(myVideo); //imger是场景中一个空的组件，用来显示myVideo的图象 <br /> thehang=0; <br /> _root.ID=setInterval(makeImg, 5); <br />} <br />function makeImg() <br />{ <br /> var pix:Number; <br /> var pixer:String; <br /> PX[thehang]=new Array(); <br /> for(w=0;w&lt;imgShow._width;w++) <br /> { <br />  pix=imger.getPixel(w,thehang); <br />  pixer=pix.toString(16); <br />  if(pix == 0xFFFFFF) pixer = ""; // don’t send blank pixel <br />  PX[thehang].push(pixer); <br /> } <br /> thehang+=1; <br /> if(thehang&gt;=imgShow._height) <br /> { <br />  clearInterval(_root.ID); <br />  imger.dispose(); <br />  sendVars(); <br /> } <br />} <br />function sendVars() <br />{ <br /> sender=new LoadVars(); <br /> sender.w=myVideo._width; <br /> sender.h=myVideo._height; <br />  <br /> for(i=0;i&lt;sender.h;i++) <br /> { <br />     sender["PX"+i]=_root.PX[i]; <br /> } <br /> sender.send("send.php","_blank","POST"); <br />}</div><p>    时间有限，今天先把代码贴上，注释回头写上来，见谅。。。程序测试地址:<a href="http://benmouse.521j.com/" target="_blank"><font color="#373e55">http://benmouse.521j.com</font></a></p></div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-04 09:37 <a href="http://www.blogjava.net/sl2cj/articles/50213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按钮中跳转场景问题</title><link>http://www.blogjava.net/sl2cj/articles/50162.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 03 Jun 2006 11:30:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50162.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50162.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50162.html</trackback:ping><description><![CDATA[on(release)<br />  {<br />    tellTarget("_root")<br />   {<br />      gotoAndPlay("SceneName",1);<br />   }<br /> }<br />首先，直接写gotoAndPlay()肯定是不行的，因为你是在一个mc中的按钮<br />这样写，goto语句作用的是mc，而不是_root<br />但是写成_root.gotoAndPlay("SceneName",1);也不行<br />因为mc.gotoAndPlay();没有带场景参数的函数原型，只有mc.gotoAndPlay(frame);<br />只有单独使用gotoAndPlay()才有gotoAndPlay(scene,frame)的用法<br />所以采取这种折衷的办法<br />用tellTarget()<br />既可以确保作用对象是_root.而非mc,也可以单独使用gotoAndPlay()语句<img src ="http://www.blogjava.net/sl2cj/aggbug/50162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-03 19:30 <a href="http://www.blogjava.net/sl2cj/articles/50162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】制作一个全功能的FLV播放器 </title><link>http://www.blogjava.net/sl2cj/articles/50160.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 03 Jun 2006 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50160.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50160.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50160.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50160.html</trackback:ping><description><![CDATA[
		<strong>【转帖】制作一个全功能的FLV播放器</strong>
		<!-- vB 中文修改开始: 显示声望 -->
		<!-- vB 中文修改结束 -->
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_2592" style="OVERFLOW-X: hidden">
				<b>创建一个全功能的FLV播放器</b>
				<br />
				<br />我们将制作的这个FLV播放器由这样几部分组成：<br />一个用于显示视频图像的视频对象，<br />三个分别用于播放、暂停和停止视频的按钮，<br />以及一个用于显示缓冲区装载进度的动态文本。<br /><br />1. 创建三个按钮元件，分别命名为“播放”、“暂停”、“停止”，将其各自一个实例拖放到场景舞台中。<br /><br />2. 创建一个视频元件，将其一个实例拖放到场景舞台中，并赋予其实例名myVideo。<br /><br />3. 在场景舞台中放置一个动态文本，赋予其实例名myText。<br /><br />4. 在根时间线的第1帧中捆绑下面的脚本：<br /><br />//创建一个NetConnection对象。<br />myFLVConnection=new NetConnection();<br />//创建一个流连接。<br />myFLVConnection.connect(null);<br />//创建一个NetStream对象。<br />//myFLVConnection被指定给该NetStream对象。<br />myFLVStream=new NetStream(myFLVConnection);<br />//myFLVStream被捆绑到Video对象myVideo：<br />myVideo.attachVideo(myFLVStream);<br />//设置缓冲时间。<br />myFLVStream.setBufferTime(10);<br /><br />分析这段脚本，首先我创建了一个NetConnection对象myFLVConnection，然后我调用NetConnection对象的connect()方法打开了一个流连接，在调用connect()方法时你必须传递给它一个null值作为参数。<br /><br />接下来，我利用myFLVStream=new NetStream(myFLVConnection);这行代码创建了一个NetStream对象myFLVStream，在创建时我就需要把为该“流”提供的“连接”告知它，即把myFLVConnection对象作为参数传递给NetStream类的构造函数。<br />之后，我把myFLVStream（“流”）捆绑到Video对象myVideo。然后，我还用NetStream类的setBufferTime()方法以秒为单位指定了一个缓冲时间，即要在缓冲区中装入可供播放多长时间的数据后才开始播放。<br /><br />5. 在“播放”按钮实例上捆绑下面的脚本：<br /><br />on(release){<br />//装载并播放FLV文件。<br />myFLVStream.play("myFLV.flv");<br /><br />//定义bufferLoad函数以供setInterval函数调用来显示缓冲进度。<br />function bufferLoad(){<br />//在动态文本中显示缓冲区的装载进度。<br />myText.text="缓冲区已装载"+int((myFLVStream.bytesLoaded/myFLVStream.bytesTotal)*100)+"%";<br />}<br />//设置时间间隔。<br />setInterval(bufferLoad,20);<br />}<br /><br />这行代码—myFLVStream.play("myFLV.flv");用来装载和播放FLV文件。如果你的FLV文件位于某个HTTP地址或本地文件系统的某处，你可以使用<a href="http://或file://这样的格式作为路径的前缀来指定FLV文件的位置。" target="_blank"><font color="#000000">http://或file://这样的格式作䮮.??的位置。</font></a><br />这个表达式—myFLVStream.bytesLoaded/myFLVStream.bytesTotal用来检查缓冲区已装载的字节占缓冲区要装载的总字节的比值。bytesLoaded和bytesTotal是NetStream类的两个属性。<br /><br />6. 在“暂停”按钮实例上捆绑下面的脚本：<br /><br />on(release){<br />//暂停FLV文件。<br />myFLVStream.pause();<br />}<br /><br />7. 在“停止”按钮实例上捆绑下面的脚本：<br /><br />on(release){<br />//停止FLV文件并同时删除下载的FLV文件。<br />myFLVStream.close();<br />}<br /><br />8. 制作完成。你应该在你的网站中测试这个FLV播放器。</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-03 19:02 <a href="http://www.blogjava.net/sl2cj/articles/50160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetStream对象 </title><link>http://www.blogjava.net/sl2cj/articles/50159.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 03 Jun 2006 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50159.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50159.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50159.html</trackback:ping><description><![CDATA[
		<strong>NetStream对象</strong>
		<!-- vB 中文修改开始: 显示声望 -->
		<!-- vB 中文修改结束 -->
		<hr style="COLOR: #fff" size="1" />
		<!-- / icon and title -->
		<!-- message -->
		<div id="post_message_2872" style="OVERFLOW-X: hidden">NetStream对象是在所有联机对象之间传递影音串流。如果你仅仅是为了传递文字聊天内容，使用共享对象就可以解决，不必要使用这个对象。<br />该对象的基本属性有<br />time 到目前为止，串流资料播放的秒数<br />bufferTime 缓冲区的最大秒数<br />currentFps 当前播放影像的速率（每秒帧数）<br />bufferLength 当前缓冲区的资料秒数<br />liveDelay 实时播放视频流的间隔<br />但是当你想知道当前播放的影像的总长度的时候，必须调用服务器端的方法才可以，因为客户端的FlashPlayer是无法获知数据流的总长的。你需要在客户端写如下方法：<br />01 : function getInfo()<br />02 : { <br />03 : nc.call( 'sendInfo', new MyResultSetName(), myStream);<br />04 : }<br />05 : function MyResultSetName()<br />06 : { <br />07 : this.onResult = function ( retVal )<br />08 : { <br />09 : _root.streamlength = retVal;<br />10 : };<br />11 : this.onStatus = function(info)<br />12 : { <br />13 : trace ( 'Level:' + info.level + 'Code:' + info.code);<br />14 : // process error object<br />15 : };<br />16 : }<br /><br /><br />然后在服务器端的main.asc文件中的相关事件中写入：<br />01 : application.onAppStart = function ()<br />02 : { <br />03 : trace('::: Application has started :::');<br />04 : }<br />05 : application.onConnect = function (client)<br />06 : { <br />07 : application.acceptConnection (client);<br />08 : // Add methods<br />09 : client.prototype.sendInfo = function (name) { <br />10 : var slen = Stream.length (name);<br />11 : trace ( 'slen:' + slen);<br />12 : return slen;<br />13 : };<br />14 : }<br /><br /><br />相关方法参考：<br />setBufferTime ( 秒数)<br />可以设置缓冲区的大小以提高低品质的网络情况<br />注意：bufferLength大小总是不大于bufferTime<br /><br />attachVideo ( 影像来源,[ 拍摄模式 ] )<br />将摄像机对象的影像追加给串流对象，如果影像来源为null，将停止捕捉影像<br />拍摄模式省略表示捕捉连续的影像；若为0则只拍摄单元格画面；大于0，将以此数值为秒数间隔，连续拍摄单元格影像。<br /><br />attactAudio ( 声音来源 )<br />将麦克风的音源设定给串流对象<br /><br />publish ( 串流资料名,[ 播出方式 ])<br />如果串流资料名没有指定则停止播出<br />播出方式有live（默认值）实时播出但不存储；record 播出同时以串流资料名.flv文件存储，路径为应用程序路径下面的streams文件夹；append 播出的同时追加到指定名称的flv文件中，如果不存在，则自动创建。<br /><br />pause()<br />暂停、开始播放<br /><br />close ()<br />停止发布或播放当前所有数据流，把 NetStream.time 属性设置为 0, 使得其它客户端可以使用该数据流，该方法当你使用 NetStream.play() 或NetStream.publish() 的时候被隐含调用 <br /><br />play( 串流名称，起始时间，长度，是否清除前一个串流 )<br />起始时间默认值为－2 表示flash会先尝试播放实时影音，否则就播放指定识别名称的文件<br />若为－1 将只播放实时影音 若为0 将只播放指定名称的录像内容<br />长度参数指定影音播放的秒数 默认为－1 表示一直播放到结束 为其它值为播放到指定秒数的内容<br /><br />receiveVideo(fps)<br />指定播放串流的速率fps设定为0时，flash将停止播放影像<br /><br />seek(秒数)<br />快倒倒录像文件倒指定秒数的画面，如果设为0，则跳转到开头<br />可以使用相对时间来跳转，如<br />client_ns.seek(client_ns.time-3)<br /><br />如果要在传输音频或视频流的同时，包含文本数据等，也就是说进行数据交换，则可以使用send方法。<br />可以在客户端包含下面的actionscript：<br />1 : var my_nc:NetConnection = new NetConnection();<br />2 : my_nc.connect('rtmp://myServer.myDomain.com/appName/appInstance');<br />3 : var my_ns:NetStream = new NetStream(my_nc);<br />4 : my_ns.publish('slav', 'live'); <br />5 : my_ns.send('Fun', 'this is a test'); <br /><br />在接收端可以使用下面代码：<br />1 : var my_nc:NetConnection = new NetConnection();<br />2 : my_nc.connect('rtmp://myServer.myDomain.com/appName');<br />3 : my_ns = new NetStream(my_nc);<br />4 : my_ns.play('slav', -1, -1);<br />5 : <br />6 : my_ns.Fun = function(str) { //Fun is the handler name<br />7 : trace (str);<br />8 : }<br />关闭视频流的几种方法：<br />1 : myStream_ns.publish(false);// 停止整个串流<br />2 : myStream_ns.close();//关闭串流，当然也就停止了串流播放<br />3 : mystream_ns.attachVideo(null);//仅仅停止视频播放，仍然保持音频播放.</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-03 18:57 <a href="http://www.blogjava.net/sl2cj/articles/50159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 Flash com MX构建视频应用  </title><link>http://www.blogjava.net/sl2cj/articles/50054.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Fri, 02 Jun 2006 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50054.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50054.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50054.html</trackback:ping><description><![CDATA[<strong>使用 Flash com MX构建视频应用 </strong>
<table class="docParameter" cellspacing="6" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td>
            <p>作者：<a href="http://www.blueidea.com/common/contact.asp?type=作者&amp;username=mjking" target="_blank">mjking</a>　时间： 2003-07-02　文档类型：原创　来自：<a href="http://www.7yue.com/">7yue.com</a> <br />浏览统计 total:10719 | year:951 | Quarter:406 | Month:20 | Week:43 | today:10</p>
            <p class="list">&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
<table class="border" cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="6" src="http://www.blueidea.com/img/spacer.gif" width="6" alt="" /></td>
        </tr>
    </tbody>
</table>
<table class="pageLighter" cellspacing="11" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="content">
            <p>　　这个教程讲解了一个使用Flash Communication Server MX的基本的开发过程，本教程适用于初学者（教程原型改编自Flash Com帮助文档）。</p>
            <p>　　面向对象我们不谈，这里我也没有时间跟各位探讨这个。如果每个开发者面临的问题是，我必须在短短几天之内就能够开发一个应用出来（或者是一个模块），那么从头学习Flash Communication Server MX的语法是一种不可取的方式。而且很多很多国内的开发者，一看好几百页（甚至上千页）的英文资料，头都大了，更不要谈什么快速学习和融会贯通。学习没有捷径，但是有方法，方法正确，那就见效快，方法不对，那就可能时间越长越痛苦。初学者除了看文档外，还要多多自己学习别人公开的源程序（笔者这里不主张用什么asv之类的东西）。我虽然也不是什么高级开发人员，但是希望我的这些教程能够帮助国内的开发人员进一步快速的了解Flash Communication Server MX。</p>
            <p>我们先来看看这个教程必须的工具：</p>
            <ul>
                <li>Macromedia Flash Communication Server MX </li>
                <li>Macromedia Flash MX </li>
                <li>一个usb接口的Camera </li>
            </ul>
            <p>下面我按照我的操作步骤来讲解这个Demo的制作过程：</p>
            <ol>
                <li>打开Flash MX，确定你需要多少个层来容纳你所需要的东西。注意，这种方式可能不适合设计人员，因为设计人员在做Flash MTV的时候可能有他们的方法，这里是我的方法。我想到了表现一个实时播放的视频窗口，一个用来发布视频的窗口。还需要一些action Script来控制逻辑，此外，还需要一个简单的逻辑。因此，应该有三个图层（Layer）。如下图：<br /><br /><img height="115" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/1.gif" width="194" border="0" /><br /></li>
                <li>背景没什么可说的，各位随便制作，能多花哨就多花哨。我们现在是需要向Content图层的所在场景嵌入视频。F11打开库窗口，点击右上角图标，弹出菜单，选择&ldquo;新建视频&rdquo;。如下图：<br /><br /><img height="173" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/2.gif" width="341" border="0" /> <br /></li>
                <li>把库中生成的视频拖拽两次到场景中，注意当前Layer所在为Content。如下图：<br /><br /><a class="" href="http://www.blueidea.com/articleimg/2003/07/343/3.gif" target="_blank"><img height="176" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/3-s.GIF" width="450" border="0" /></a> <br /></li>
                <li>给场景中的两个嵌入视频指定相应的Instance Name，左边的视频命名为live_video，右边的定为Publish_video（注意修改了一下宽和高）。如果没有属性面板，就按快捷键CTRL+F3<br /><br /><img height="127" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/4.gif" width="165" border="0" /> <img height="127" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/5.gif" width="169" border="0" /> <br /></li>
                <li>再两个视频窗口下面各放一个Push Button的Flash UI Component。左边的命名为record_btn，右边的命名为replay_btn。看下图：<br /><br /><img height="138" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/6.gif" width="355" border="0" /> <br /></li>
                <li>接下来就该写代码了，我们选则action所在层。我在写Flash Communication Server MX的程序的时候总是有一个小的经验和顺序，就是不管你是什么视频、音频还是什么其他交互的组件，这些组件在能够使用之前，先给他们来一个NetConnection的连接，记住了，没这个NetConnection连接，你什么也别干，也什么都干不了。程序都在下图了，各位可以仔细观看一下。<br /><br /><a class="" href="http://www.blueidea.com/articleimg/2003/07/343/7.gif" target="_blank"><img height="619" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/7-s.GIF" width="450" border="0" /></a> <br /></li>
                <li>最后，我们就直接在Flash MX的编辑环境里输出查看结果。<br /><br /><img height="220" alt="" src="http://www.blueidea.com/articleimg/2003/07/343/8.gif" width="300" border="0" /> </li>
            </ol>
            </td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/sl2cj/aggbug/50054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-02 20:34 <a href="http://www.blogjava.net/sl2cj/articles/50054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>评估视频录制的带宽需求来采用合适的尺寸和速率</title><link>http://www.blogjava.net/sl2cj/articles/49016.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 30 May 2006 07:39:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/49016.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/49016.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/49016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/49016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/49016.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 视频录制是FCS经常会用到的一个功能，其中重要的一点是要评估视频录制的带宽需求来采用合适的尺寸和速率。其大致的算法是：视频宽度 x 视频高度 x 播放速率 (fps) = 总的带宽( bits/sec)但是要注意的是，在使用FCS录制的时候，使用的是Bps，而不是kbps，要转换（8 bits ＝1 byte ）打开比方，使用320&times;240的视频窗口以30fps的速率录制，其带宽消耗计...&nbsp;&nbsp;<a href='http://www.blogjava.net/sl2cj/articles/49016.html'>阅读全文</a><img src ="http://www.blogjava.net/sl2cj/aggbug/49016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-30 15:39 <a href="http://www.blogjava.net/sl2cj/articles/49016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>