<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title><![CDATA[小S吧 — sunbright博客]]></title> 
    <link>http://www.xiaos8.com/</link> 
    <description><![CDATA[生活中会接触很多杯具，一旦把杯具打碎了，那就真的悲剧了]]></description> 
    <language>en</language> 
    <copyright><![CDATA[Copyright 2010, 小S吧 — sunbright博客]]></copyright> 
    <webMaster><![CDATA[iamsun1550@gmail.com (sunbright)]]></webMaster> 
    <generator>LBS v2.0.313</generator> 
    <pubDate>Sat, 31 Jul 2010 12:25:20 +0800</pubDate> 
    <ttl>60</ttl>
  
    <item>
      <title><![CDATA[盛大游戏麻球网上线 Flash独立游戏开发者的曙光]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=575]]></link> 
      <category><![CDATA[闲话新闻]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Fri, 02 Jul 2010 16:17:17 +0800</pubDate> 
      <description><![CDATA[<div class="quote"><div class="quote-title"> 前言</div><div class="quote-content">在2010年5月30日的Flash开发者交流会上，陈静（iiley：AsWing框架的作者）所讲的《FLASH 独立游戏 - 现状分析与发展思考》让很多Flash开发者了解到可以通过类似mochimedia这样的网站，用自己制作的Flash小游戏来赚钱。如今麻球网 <a href="http://zh-cn.mochimedia.com" title="http://zh-cn.mochimedia.com" target="_blank">http://zh-cn.mochimedia.com</a> （也就是Mochi中国）上线了，这也意味着国内Flash独立游戏开发走向成熟，将形成一条成熟的产业链！</div></div><p/>　<b>什么叫Flash独立游戏</b><p/>　　简单来说，独立游戏就是不受商业的影响下，由开发者自己做策划，做开发，并发行该款游戏，简单来说是随自己的意思来设计游戏。其实很多著名的游戏企业，都是由小型工作室发展而来的，其发展阶段也可以被称之独立游戏。当然Flash独立游戏指的就是由Flash开发的小游戏。<br />　　因为Flash的开发效率高，小巧，平台普及率，且易传播，所以Flash独立游戏有着得天独厚的优势。<p/>　<b>Mochi Media在国外</b><p/>　　Mochi Media总部位于旧金山，目前拥有1.4亿月度活跃用户，发布15,000多款网页游戏，并与近40,000家发行商网站建立了渠道合作关系，已经建立起包括游戏玩家、开发商、广告商和发行商在内的庞大网络和强大品牌。Mochi Media通过开放的平台向游戏开发者提供各种开发产品和服务，帮助他们进行用户数据跟踪、产品多渠道分销等，并通过广告和虚拟道具交易实现盈利。<p/>　<b>被盛大收购的Mochi Media——麻球网</b><p/>　　引入新商业模式，帮助国内开发者获利。开放并且易用的，自助式的平台。只需复制粘帖一小段代码,就能在游戏中实现广告播放，道具销售，积分排行，版本实时更新等功能。并且，开发者能够在麻球网提供的后台页面上，清楚地看到自己的flash游戏的点击，播放和收入情况。庞大的用户群及游戏发布渠道，麻球网称拥有2亿全球活跃用户及超过40000个游戏发布渠道。全方位的技术支持。麻球网依托盛大的技术力量，给予优秀的开发者以帮助和提供相应的技术支持。例如，对国内开发者广泛关注的如何完成API广告内置和其他一些技术难题，都会通过麻球网提供详尽的解答和指导。为优秀开发者提供资金帮助。麻球网设有专门的基金计划，针对优秀的作品和开发者，用于提升这些开发者的竞争力。提供最新Flash技术研究成果。<p/>　<b>这意味着什么？</b><p/>　　以前国内的Flash独立游戏开发者，都是通过国外的商业模式去赚钱，这样及其不方便。现在麻球网上线了，一条成熟的商业模式被引入，国内的开发者只需要通过麻球网，就可以很轻松获得盈利，得到麻球网许多的支持：<p/>　1、广告API：您可以在您的游戏内嵌入广告，当广告播放时您就可以获得收入。<br />　2、分析API：无论您的Flash游戏被发布到了哪里，您都可以追踪到相关信息。<br />　3、钱币API：在您的游戏中启用虚拟货币，向您的玩家直接销售游戏道具。<br />　4、游戏发行：通过麻球网的平台，将您的Flash游戏发行到数万个网站上。<br />　5、积分API：轻松给您的游戏添加排行榜，积分等功能，并将信息发布到各个站点上。<br />　6、在线更新：实时更新您的Flash游戏并对它进行加密保护。<br />　7、社交API：给你的Flash游戏加入社交功能，和SNS社区完美结合在一起。<br />　8、开发者基金：如果您有好的项目，或者仅仅是一个好的想法，还可以联系麻球网，他们会提供帮助。<p/>　<b>开发者的角度</b><p/>　　纵览麻球网的好处，这儿我也为大家分析了一些对于平常开发者不错的方面：<p/>　1、只需添加一行代码在每个游戏中赚钱<br />　　您可以从互联网的任何一个站点获得您游戏中每一次广告播放产生的收入, 只需一条代码即可！<br />　　点评：嵌入简单，一条代码搞定赚钱！<p/>　2、监控游戏的传播<br />　　监控您的游戏传播的情况, 如哪些站点引入了您的游戏，在这些站点上您的游戏的访问次数等。<br />　　点评：以前Flash小游戏做好了放到网络上面，立即就被大量散播出去，而开发者根本无法知道小游戏传播到哪了，该功能就解决了这个问题。<p/>　3、游戏收益<br />　　Mochi 币 API 能够让您直接向玩家出售虚拟物品，例如通关、装备、特殊武器以及秘籍等。<br />　　点评：目前的网络游戏，大部分的赚钱模式都是游戏完全免费，道具收费，而且这种中国独有的收费模式，开始走红全世界，并且被多家知名国际企业采用。<p/>　4、将您的游戏发送到数万家网站<br />　　Mochi向数万家合作伙伴发布商发行您的游戏，包括一些最大型的互联网站点。<br />　　点评：普通开发者即便做好了一个非常棒的游戏，但因为没有发行途径，而最终不能让广大用户玩到如此杰作。]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=575]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[画菱形]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=574]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Thu, 10 Jun 2010 15:37:12 +0800</pubDate> 
      <description><![CDATA[一位正在初学C++的同事，突然问我一个问题，说用打印函数，只用for循环，怎么输出一个菱形？<br />想起来这是以前学编程时，非常基础的一个问题<br />本来以为很简单，于是随便想了一下，发现还真没想象那么简单额<br />于是乎，努力仔细的想想，于是下面的答案就出来了<br />当然是Flash写的：<br />我这个用了3个for循环，不知道有没有用的for循环更少的方法？<br />（注意哦，只能用for循环和基本的运算）<div class="code">var k:int, result:String = &quot;&quot;, sum:int = 7;<br />var s:int = Math.abs(- sum / 2);<br />for(var i:int = 0; i &lt; sum; i ++){<br />&nbsp;&nbsp;var n:int = Math.abs(s - i);<br />&nbsp;&nbsp;var t:int = sum - n * 2;<br />&nbsp;&nbsp;for(k = 0; k &lt; n; k ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;result += &quot; &quot;;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;for(k = 0; k &lt; t; k ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;result += &quot;*&quot;;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;result += &quot;\n&quot;;<br />}<br />trace(result);<p/>输出结果：<br />　 *<br />　***<br />&nbsp;*****<br />*******<br />&nbsp;*****<br />　***<br />　 *</div>]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=574]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[Flex中DataGrid固定列宽和按百分比设置列宽]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=571]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Thu, 03 Jun 2010 10:51:12 +0800</pubDate> 
      <description><![CDATA[很少写Flex相关的东西，今天遇到了这个问题，想了很多办法，也查了百度，都没有得到比较正确的办法。<br />下面是解决的办法，但不知道有没有更简单的办法就是了，俺只是业余摆弄一下Flex做一些AIR小工具。<p/>首先是一段DataGrid相关实例代码：<div class="code">&lt;mx:DataGrid id=&quot;dataComp&quot; dataProvider=&quot;{resultList}&quot; width=&quot;100%&quot; height=&quot;100%&quot; sortableColumns=&quot;false&quot; selectable=&quot;false&quot;<br />&nbsp;&nbsp;resizableColumns=&quot;false&quot; draggableColumns=&quot;false&quot; resize=&quot;dataCompResizeHandle()&quot;&gt;<br />&nbsp;&nbsp;&lt;mx:columns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;line&quot; headerText=&quot;行数&quot; textAlign=&quot;center&quot; width=&quot;40&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;text&quot; headerText=&quot;匹配文本&quot; paddingLeft=&quot;5&quot; paddingRight=&quot;5&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemRenderer=&quot;mx.controls.Label&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;path1&quot; headerText=&quot;路径&quot; paddingLeft=&quot;5&quot; paddingRight=&quot;5&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemRenderer=&quot;mx.controls.Label&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;times&quot; headerText=&quot;次数&quot; textAlign=&quot;center&quot; width=&quot;40&quot;/&gt;<br />&nbsp;&nbsp;&lt;/mx:columns&gt;<br />&lt;/mx:DataGrid&gt;</div><p/>侦听resize事件，当得到resize之后做这样的操作：<div class="code">//数据对象重设尺寸处理<br />private var widthList:Array = [40,0.7,0.3,40];<br />private function dataCompResizeHandle():void{<br />&nbsp;&nbsp;dataComp.validateNow();<br />&nbsp;&nbsp;var value:Number,display:DataGridColumn,i:int;<br />&nbsp;&nbsp;var list:Array = dataComp.columns;<br />&nbsp;&nbsp;var length:int = list.length;<br />&nbsp;&nbsp;var dataWidth:int = 0;<br />&nbsp;&nbsp;for(i = 0; i &lt; length; i ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;display = list[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;dataWidth += display.width;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;for(i = 0; i &lt; length; i ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;display = list[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;value = widthList[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;if(value &gt; 1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataWidth -= value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.width = int(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;for(i = 0; i &lt; length; i ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;display = list[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;value = widthList[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;if(value &lt;= 1) display.width = int(dataWidth * value);<br />&nbsp;&nbsp;}<br />}</div><p/>要点注释：<br />1、得到resize之后一定要dataComp.validateNow();，这样取出来的总列宽才是正确的！<br />2、第一个for循环在计算总列宽，直接取dataComp的宽度是不对的，它会包含滚动条的宽度，我也不知道有没有什么办法可以直接取到总列宽，因此我采用了for循环去累加列宽；<br />3、第二个for循环在设置widthList中是在设置需要固定列宽的子项，然后从总列宽中减去；<br />4、第三个for循环在设置widthList中是按百分比设置子项列宽。]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=571]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[我用反射函数describeType做过的事情]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=570]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Mon, 31 May 2010 16:20:40 +0800</pubDate> 
      <description><![CDATA[<div class="quote"><div class="quote-title"> 前言</div><div class="quote-content">标题纠结了很久，刚开始叫“我用反射函数describeType在干吗？”，看到第一位仁兄的回帖，继续纠结，继续推敲，最后就出现了现在的标题。。<br />如果不知道describeType是什么东西，那么先去看这篇基础教程吧：<br /><a href="http://www.xiaos8.com/article.asp?id=251" title="http://www.xiaos8.com/article.asp?id=251" target="_blank">http://www.xiaos8.com/article.asp?id=251</a></div></div><p/>下面展出的图片是我在公司开发的内部debug工具的截图，因为我们公司的Flash是跑在C++上，很多接口都是依赖C++实现的，那么很多逻辑都是从C++启动，可能没办法直接打开调试，那么我们得有办法调试，所以下面这个工具就孕育而生了，当然跟市面上的Alcon差不多，不过我们的功能更多，且可以针对网络环境调试，和更多适应我们公司的调试功能。<p/>下面4个截图都是我对一个游戏中AI对象进行数据检查：<p/><b>1、对象可读属性检查，当然他是用反射函数实现的，检查到反射出来的XML中accessor是可读时，即显示出来</b><br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><img style="padding-bottom:5px" src="http://www.xiaos8.com/uploads/201005/20100531_1.gif" alt="http://www.xiaos8.com/uploads/201005/20100531_1.gif" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201005/20100531_1.gif" target="_blank">http://www.xiaos8.com/uploads/201005/20100531_1.gif</a></div></td></tr></table><br /><b>2、对象的结构检查，当你去调试别人写的类时，特别是结构较为复杂的话，那么用反射函数来帮忙，将所有结构打印出来，他的继承关系，他实现的接口等，将一目了然！</b><br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><img style="padding-bottom:5px" src="http://www.xiaos8.com/uploads/201005/20100531_2.gif" alt="http://www.xiaos8.com/uploads/201005/20100531_2.gif" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201005/20100531_2.gif" target="_blank">http://www.xiaos8.com/uploads/201005/20100531_2.gif</a></div></td></tr></table><br /><b>3、对象的属性检查，还是一样你去调试别人的类，那么用反射函数来帮忙，一眼就可以看到如此多的属性，而且是否是只读属性，还是只写属性，或者是可读可写属性，就连属性返回对象的类型也一目了然！</b><br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><img style="padding-bottom:5px" src="http://www.xiaos8.com/uploads/201005/20100531_3.gif" alt="http://www.xiaos8.com/uploads/201005/20100531_3.gif" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201005/20100531_3.gif" target="_blank">http://www.xiaos8.com/uploads/201005/20100531_3.gif</a></div></td></tr></table><br /><b>4、对象的方法检查，同理调试别人的类，依然用反射函数来帮忙，转瞬间就能知道他所有的方法调用，而且还能知道这个方法是出自哪个类实现的，也能知道该方法会返回什么类型！</b><br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><img style="padding-bottom:5px" src="http://www.xiaos8.com/uploads/201005/20100531_4.gif" alt="http://www.xiaos8.com/uploads/201005/20100531_4.gif" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201005/20100531_4.gif" target="_blank">http://www.xiaos8.com/uploads/201005/20100531_4.gif</a></div></td></tr></table>]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=570]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[关于flash.utils.Proxy的bug]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=569]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Sun, 30 May 2010 21:20:43 +0800</pubDate> 
      <description><![CDATA[今天的上海Flash聚会，谈熠讲的很精彩，特别是flash.utils.Proxy类，自从我知道了这个类，很多项目中都用它，它使我的程序变得相当灵活，而且在跟C++定义接口时，Flash用Proxy类封装接口，相当完美！不过我却要补充的是一个关于Proxy类的bug，用Proxy类开发差不多有1年了，遇到过一个比较头疼的问题，下面这个链接就是我以前发的关于这个bug的描述。<br /><a href="http://www.xiaos8.com/article.asp?id=503" title="http://www.xiaos8.com/article.asp?id=503" target="_blank">http://www.xiaos8.com/article.asp?id=503</a><br />这个bug，暂时是没有直接的解决办法，不过我相信能碰到的人应该很少<br />我们公司的技术构成是C++和Flash共同存在，很多时候在加载时需要用到不同域加载，因此才能碰到这个问题。<br />我现在采用的解决办法是自己写一个Proxy类，不过这办法我觉得比较SB，一般我们调用方法的时候都是Object.method()，而使用我们自己写的，自然没那么方便了，只能Proxy.call(methodName,args); Proxy.set(name,value); Proxy.get(name); 但好处是Proxy那种灵活性依然存在，不过是写程序的时候很麻烦，而且面对可读性可能比使用Proxy类更差。因此还需大家谨慎衡量一下利弊哦~]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=569]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[AS3之麦克风接口【flash.media.Microphone 类】]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=568]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Tue, 25 May 2010 14:18:13 +0800</pubDate> 
      <description><![CDATA[首先来看一个演示，如果你装了麦克风，那么请对着你的麦克风大声的啊一下，下面的flash演示就会动起来<br /><div class="ubb-obj-div"><input id="bShowobj45ld" type="hidden" value="-1" /><a href="javascript:ubbShowObj('swf','obj45ld','http://www.xiaos8.com/uploads/flash/SoundGame.swf','400','300');"><img src="http://www.xiaos8.com/styles/default/images/icon_media.gif" alt="Media" /> <b>点击播放/隐藏媒体</b></a><div id="obj45ld"><a href="http://www.xiaos8.com/uploads/flash/SoundGame.swf" target="_blank">http://www.xiaos8.com/uploads/flash/SoundGame.swf</a></div></div>随着你声音的大小不一，他每次跳动的高度和速度也不一样<p/>下面是源代码，不过是接口展示而已，所以是一个很简单的例子，也是很容易看懂的<div class="code">package {<br />&nbsp;&nbsp;import flash.display.Shape;<br />&nbsp;&nbsp;import flash.display.Sprite;<br />&nbsp;&nbsp;import flash.events.ActivityEvent;<br />&nbsp;&nbsp;import flash.events.Event;<br />&nbsp;&nbsp;import flash.media.Microphone;<p/>&nbsp;&nbsp;public class SoundGame extends Sprite<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;private var main:Sprite;<br />&nbsp;&nbsp;&nbsp;&nbsp;private var mic:Microphone;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private var minHigh:int = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;private var intervalValue:int = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public function SoundGame()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;private function init():void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initMic();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createSky();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createLand();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createMain();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//初始化麦克风<br />&nbsp;&nbsp;&nbsp;&nbsp;private function initMic():void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mic = Microphone.getMicrophone();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mic.setSilenceLevel(30,0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mic.setLoopBack();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mic.addEventListener(ActivityEvent.ACTIVITY,micActivityHandle);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//创建操作<br />&nbsp;&nbsp;&nbsp;&nbsp;private function createMain():void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mainContainer:Sprite = new Sprite;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main = new Sprite;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.graphics.beginFill(0xffffff);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.graphics.drawCircle(-2,-4,4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainContainer.x = 100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainContainer.y = 250;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainContainer.addChild(main);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(mainContainer);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.addEventListener(Event.ENTER_FRAME,frameHandle);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//创建天<br />&nbsp;&nbsp;&nbsp;&nbsp;private function createSky():void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var shape:Shape = new Shape;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.beginFill(0x6699cc,1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.drawRect(0,0,400,250);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(shape);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//创建陆地<br />&nbsp;&nbsp;&nbsp;&nbsp;private function createLand():void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var shape:Shape = new Shape;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.beginFill(0x002222,1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.drawRect(0,250,400,150);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(shape);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//麦克风活跃处理<br />&nbsp;&nbsp;&nbsp;&nbsp;private function micActivityHandle(e:ActivityEvent):void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e.activating &amp;&amp; intervalValue == 0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intervalValue = mic.activityLevel / 5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//持续处理<br />&nbsp;&nbsp;&nbsp;&nbsp;private function frameHandle(e:Event):void{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intervalValue == 0) return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.y -= intervalValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intervalValue --;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intervalValue == 0) intervalValue -= 1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//落地<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var min:int = - minHigh;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(min &lt; main.y){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.y = min;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intervalValue = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />}</div>]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=568]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[【转贴】说服他人的5种技巧]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=567]]></link> 
      <category><![CDATA[工作日志]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Mon, 24 May 2010 13:46:27 +0800</pubDate> 
      <description><![CDATA[<b>1、先给予，后索取 (Be the first to give )。</b><br />研究表明，我们容易被给我们帮过忙的人说服：有些服务员给我们结账的时候带来口香糖，我们一般给他们的小费多些。工作中我们更倾向于给帮助过我们的人更多支持… <p/><b>2、不要给对方太多选择 (don’t offer too many choices)：</b><br />不论是给用户选择，还是给员工的奖励机制，太多的选择经常会给人带来挫折感… <p/><b>3、不要以自我为中心辩护(argue against self-interest)。</b><br />在说服别人的过程中，信任是最关键的。有时候在大力鼓吹之前承认自己方面的一些小不足可以提高信任感… <p/><b>4、失去比得到更有说服力 (losses are more persuasive than gains)。</b><br />告诉对方如果不接受你的意见或者不买的你的产品会失去什么，要比只是说明他们会得到什么要更能说服人… <p/><b>5、让对方觉得自己已经取得了一定进步 (make people feel as if they’ve already made progress toward a goal)。</b><br />例如以下两种推销洗车会员卡服务的方法，方法2的顾客保持率是方法1的两倍。 <br />1) 洗八次赠一次 <br />2) 洗十次车赠一次，第一次算免费赠送]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=567]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[【转贴】十条不错的编程观点]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=566]]></link> 
      <category><![CDATA[工作日志]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Mon, 24 May 2010 13:35:38 +0800</pubDate> 
      <description><![CDATA[<b>1） The only “best practice” you should be using all the time is “Use Your Brain”.</b><br />唯一的“Best Practice”并不是使用各种各样被前人总结过的各种设计方法、模式，框架，那些著名的方法、模式、框架只代码赞同他们的人多，并不代表他们适合你，你应该更多的去使用你的大脑，独立地思考那些方法、模式、框架出现的原因和其背后的想法和思想，那才是“best practice”。事实上来说，那些所谓的“Best Practice”只不过是限制那些糟糕的程序员们的破坏力。<p/><b>2）Programmers who don’t code in their spare time for fun will never become as good as those that do.</b><br />如果你对编程没有感到一种快乐，没有在你空闲的时候去以一种的娱乐方式去生活，无论是编程，还是运动，还是去旅游，那么你只不过是在应付你的工作，无时无刻不扎在程序堆中，这样下来，就算是你是一个非常聪明，非常有才华的人，你也不会成为一个优秀的编程员，要么只会平平凡凡，要么只会整天扎在技术中成为书呆子。当然，这个观点是有争议，热情和能力的差距也是很大的。不过我们可以从中汲取其正面的观点。<p/><b>3）Most comments in code are in fact a pernicious form of code duplication.</b><br />注释应该是注释Why，而不是How和What，参看《惹恼程序员的十件事》，代码告诉你How，而注释应该告诉你Why。但大多数的程序并不知道什么是好的注释，那些注释其实和code是重复的，毫无意义。<p/><b>4）XML is highly overrated.</b><br />XML可能被高估了。XML对于Web上的应用是不错的，但是我们把其用到了各种地方，好像没有XML，我们都不会编程了。<p/><b>5）Not all programmers are created equal.</b><br />这是那些junior经理或是流程爱犯的错，他们总是认为，DeveloperA == DeveloperB，只要他们的title一样，他们以为他们的能力、工作速度、解决问题的方法，掌握的技能等等都是一样的。呵呵。更扯的是，在某些时候，就算是最差的程序员，他们也会认为其比别人强十倍，这就是现代的SB管理。<p/><b>6）”Googling it” is okay!</b><br />Google只会给你知识，并不会教给你技能。那里只有“鱼”，没有“渔”，过度的使用Google，只会让你越来越离不开他，你越来越去要去立马告诉你答案，而你越来越不会自己去思考，自己去探索，去专研。如果KFC快餐是垃圾食品对我们的身体没有好处，那么使用Google也一种快餐文化对我们的智力发展大大的没有好处。<p/><b>7）If you only know one language, no matter how well you know it, you’re not a great programmer.</b><br />如果你只懂一种语言，准确的说，如果你只懂一类语类，如：Java和C#，PHP和Perl，那么，你将会被局限起来，只有了解了各种各样的语言，了解了不同语言的不同方法 ，你才会有比较，只有了比较，你才会明白各种语言的长处和短处，才会让你有更为成熟的观点，而且不整天和别的程序在网上斗嘴争论是Windows好还是Unix好，是C好还是C++好，有这点工夫能干好多事了。世界因为不同而精彩，只知道事物的一面是有害的。<p/><b>8）Your job is to put yourself out of work.</b><br />你的工作不是保守，那种教会徒弟，饿死师父的想法，不但是相当短浅的，而且还是相当脑残的。因为，在计算机世界里，你掌握的老技术越多，你就越没用，因为技术更新的太快。你对工作越保守，这个工作就越来越离不开你，你就越不越不能抽身去学新的东西，你也就越来越OUT了。记住：If you can’t be replaced then you can’t be promoted!<p/><b>9）Design patterns are hurting good design more than they’re helping it.</b><br />很多程序员把设计模式奉为天神，他们过度的追求设计模式以至都都忘了需求是什么，结果整个系统设计被设计模式搞得乱七八糟，我们叫这种编程为“设计模式驱动编程”，正如第一点所说，如果你不懂得用自己的大脑思考的话，知其然，不知所以然的话，那么你不但得不到其好处，反而受其所累。<p/><b>10）Unit Testing won’t help you write good code.</b><br />准确地说，我们可以认为这是Test-Driven开发，其实，这种开发就是先写unit test case，这样的开发方式的主要目的是，为了防止你不会因为一个改动而引入Bug，但这并不会让你能写出更好的代码。这只会让你写出不会出错的代码。同第一点，这样的方法，只不过是防止糟糕的程序员，而并不是让程序员或代码质量更有长进。反而，通过Unit Test会为程序员的为自己代码做辩解的一种托辞。]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=566]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[强大的Google翻译支持中文发音了]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=564]]></link> 
      <category><![CDATA[网络发现]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Thu, 13 May 2010 09:45:01 +0800</pubDate> 
      <description><![CDATA[以前Google翻译除了支持翻译的本职工作以外，还支持英语发音，和部分语言的语音显示。尽管以前对中文只是支持了翻译和拼音显示，但还是比较遗憾，不懂拼音的人依然不知道该词组如何发音。但现在支持翻译，还支持中文发音，虽然念的不是很好，且不带有感情色彩，但发音较清晰，完全可以听得出说的什么东西。<p/>这一功能，无疑是学习中文的好工具啊！以后大部分语言都有了发音功能，这无疑是世界人民的沟通做出了很大的贡献。<p/><a href="http://translate.google.cn/#zh-CN|zh-CN|%E4%BD%86%E7%8E%B0%E5%9C%A8%E6%94%AF%E6%8C%81%E7%BF%BB%E8%AF%91%EF%BC%8C%E8%BF%98%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E5%8F%91%E9%9F%B3%EF%BC%8C%E8%99%BD%E7%84%B6%E5%BF%B5%E7%9A%84%E4%B8%8D%E6%98%AF%E5%BE%88%E5%A5%BD%EF%BC%8C%E4%B8%94%E4%B8%8D%E5%B8%A6%E6%9C%89%E6%84%9F%E6%83%85%E8%89%B2%E5%BD%A9%EF%BC%8C%E4%BD%86%E5%8F%91%E9%9F%B3%E8%BE%83%E6%B8%85%E6%99%B0%EF%BC%8C%E5%AE%8C%E5%85%A8%E5%8F%AF%E4%BB%A5%E5%90%AC%E5%BE%97%E5%87%BA%E8%AF%B4%E7%9A%84%E4%BB%80%E4%B9%88%E4%B8%9C%E8%A5%BF%E3%80%82" title="http://translate.google.cn/#zh-CN|zh-CN|%E4%BD%86%E7%8E%B0%E5%9C%A8%E6%94%AF%E6%8C%81%E7%BF%BB%E8%AF%91%EF%BC%8C%E8%BF%98%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E5%8F%91%E9%9F%B3%EF%BC%8C%E8%99%BD%E7%84%B6%E5%BF%B5%E7%9A%84%E4%B8%8D%E6%98%AF%E5%BE%88%E5%A5%BD%EF%BC%8C%E4%B8%94%E4%B8%8D%E5%B8%A6%E6%9C%89%E6%84%9F%E6%83%85%E8%89%B2%E5%BD%A9%EF%BC%8C%E4%BD%86%E5%8F%91%E9%9F%B3%E8%BE%83%E6%B8%85%E6%99%B0%EF%BC%8C%E5%AE%8C%E5%85%A8%E5%8F%AF%E4%BB%A5%E5%90%AC%E5%BE%97%E5%87%BA%E8%AF%B4%E7%9A%84%E4%BB%80%E4%B9%88%E4%B8%9C%E8%A5%BF%E3%80%82" target="_blank">点击试听</a> 进入后，请点击下方的小喇叭，即可听到中文发音<br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><img style="padding-bottom:5px" src="http://www.xiaos8.com/uploads/201005/{59A24CEC-2E7A-4FD9-84D4-CCC7F4042E1B}.jpg" alt="http://www.xiaos8.com/uploads/201005/{59A24CEC-2E7A-4FD9-84D4-CCC7F4042E1B}.jpg" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201005/{59A24CEC-2E7A-4FD9-84D4-CCC7F4042E1B}.jpg" target="_blank">http://www.xiaos8.com/uploads/201005/{59A24CEC-2E7A-4FD9-84D4-CCC7F4042E1B}.jpg</a></div></td></tr></table>]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=564]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[AS3自定义命名空间和默认命名空间的效率比较]]></title> 
      <link><![CDATA[http://www.xiaos8.com/article.asp?id=560]]></link> 
      <category><![CDATA[ActionScript 3.0]]></category> 
      <author><![CDATA[sunbright <null@null.com>]]></author> 
      <pubDate>Fri, 30 Apr 2010 14:06:15 +0800</pubDate> 
      <description><![CDATA[以前老是怀疑AS3自定义命名空间会比默认命名空间效率低，正好最近想弄个简单的开源图形引擎，写框架我喜欢用自定义命名空间，因为那样看上去感觉比较高端 <img src="http://www.xiaos8.com/styles/default/images/smilies/20.gif" border="0" alt="[表情20]" /> <br />于是随便做了一个小测试：<br />在屏幕用BitmapData渲染的方式，创建了6400个颜色不一样的小点，因为是测试命名空间嘛，因此把渲染的预先判断关掉了，即每帧都在重绘所有区域！SBox的第三个默认参数是delay:int = 40，1秒钟等于25次渲染，每次都是6400个小点绘制到屏幕，并且开启了强行锁帧。<div class="code">var box:SBox = new SBox(400,400);<br />box.turnOn();<br />for(var iy:int = 0; iy &lt; 80; iy ++){<br />&nbsp;&nbsp;for(var ix:int = 0; ix &lt; 80; ix ++){<br />&nbsp;&nbsp;&nbsp;&nbsp;var movie:SSlide = new SSlide(new BitmapData(1,1,false,Math.random() * 0xffffff));<br />&nbsp;&nbsp;&nbsp;&nbsp;movie.enabled = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;movie.x = ix * 2;<br />&nbsp;&nbsp;&nbsp;&nbsp;movie.y = iy * 2;<br />&nbsp;&nbsp;&nbsp;&nbsp;box.addSon(movie);<br />&nbsp;&nbsp;}<br />}<br />addChild(box);</div>SBox，SSlide等类的内部原本是用自定义命名空间来防止调用某些我不想让使用引擎的开发者调用的接口。<br />为了测试命名空间区别，因此直接将内部命名空间改成public或者protected，又输出了另一个版本来进行比较，以下两个截图即是！<p/>图1是使用默认命名空间的绘制效率，即本来不想让外部随便访问的属性，改成了protected或者public<br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><div style="background-color:#F0F8FF" align="left">图片名称：<strong>图1</strong></div><img style="padding-bottom:5px;padding-top:5px" src="http://www.xiaos8.com/uploads/201004/30_140900_2.jpg" alt="http://www.xiaos8.com/uploads/201004/30_140900_2.jpg" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201004/30_140900_2.jpg" target="_blank">http://www.xiaos8.com/uploads/201004/30_140900_2.jpg</a></div></td></tr></table><br />图2是使用自定义命名空间的绘制效率<br /><table style="margin:10px 0px 10px 0px;padding:10px;border:2px solid #cccccc;background-color:#ffffff"><tr><td align="center"><div style="background-color:#F0F8FF" align="left">图片名称：<strong>图2</strong></div><img style="padding-bottom:5px;padding-top:5px" src="http://www.xiaos8.com/uploads/201004/30_140904_1.jpg" alt="http://www.xiaos8.com/uploads/201004/30_140904_1.jpg" /><br><div style="background-color:#F0F8FF">图片地址：<a href="http://www.xiaos8.com/uploads/201004/30_140904_1.jpg" target="_blank">http://www.xiaos8.com/uploads/201004/30_140904_1.jpg</a></div></td></tr></table><p/>看了这篇文章后，你也可以回顾这篇文章：<a href="http://www.xiaos8.com/article.asp?id=406" title="http://www.xiaos8.com/article.asp?id=406" target="_blank">http://www.xiaos8.com/article.asp?id=406</a><br />这次测试用的图形引擎，就是这篇文章讲引擎的演变过来的，原来的引擎是工作时写的没办法直接开源，现在重新写了一次，并且在不断的优化，和改善其工作方式。<p/>另外上个引擎演示吧。引擎所加载的图片：<a href="http://www.xiaos8.com/uploads/flash/engine/image.png" title="http://www.xiaos8.com/uploads/flash/engine/image.png" target="_blank">http://www.xiaos8.com/uploads/flash/engine/image.png</a><br />这里面叠加播放了400个动画，目前还没做太多什么优化~优化标准都是按照120帧来跑的<br /><div class="ubb-obj-div"><input id="bShowobj8ad0" type="hidden" value="-1" /><a href="javascript:ubbShowObj('swf','obj8ad0','http://www.xiaos8.com/uploads/flash/engine/Main.swf','500','380');"><img src="http://www.xiaos8.com/styles/default/images/icon_media.gif" alt="Media" /> <b>点击播放/隐藏媒体</b></a><div id="obj8ad0"><a href="http://www.xiaos8.com/uploads/flash/engine/Main.swf" target="_blank">http://www.xiaos8.com/uploads/flash/engine/Main.swf</a></div></div>]]></description>
      <wfw:commentRss><![CDATA[http://www.xiaos8.com/feed.asp?q=comment&id=560]]></wfw:commentRss>
    </item>
      
  </channel>
</rss>
