<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RIA-道道工作室</title>
	<atom:link href="http://www.riastep.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.riastep.com</link>
	<description>Air Flex ActionScript</description>
	<lastBuildDate>Mon, 22 Feb 2010 06:46:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>你的游戏能赚钱么？</title>
		<link>http://www.riastep.com/?p=161</link>
		<comments>http://www.riastep.com/?p=161#comments</comments>
		<pubDate>Mon, 22 Feb 2010 06:46:10 +0000</pubDate>
		<dc:creator>kenny</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=161</guid>
		<description><![CDATA[　你的游戏能赚钱么？ 　　前言：投资人并不挑剔 　　2009年游戏圈里比较大的一场资本并购是博瑞传播4.4亿收购了梦工厂全部股份。名气不大的梦工厂之所以能卖如此高价，是因为梦工厂游戏的确能赚钱。 　　梦工厂经历了5年的联运生涯后，突然发现联运市场逐渐走进只赚吆喝不赚钱的尴尬境地，于是决定代理一些产品，收购一些团队，从而保持一个传统网络游戏公司的高速发展。也正因为此，笔者有幸接触到一些研发公司和研发团队，评测完成不少产品，其间感慨颇多，汇集成稿，请大家评鉴。 　　投资人要代理一款产品或者收购一个团队，必须经过严格审核。很遗憾，鲜有产品或团队能够通过审核，不是投资人太挑剔，我们实在是找不到足够证据证明这个产品能赚钱，或者这个团队能做出赚钱的产品，虽然我们同时关注很多产品和团队，但笔者实在不能确认这些团队能把产品做成赚钱的产品——尽管我们苦口婆心。 　　不同于传统的VC，也不同于圈内“18基金”或“赢在巨人”，梦工厂真诚希望能够用自己多年的经验和相对充裕的资金，在自己能获利的前提下，帮助那些成功概率较大的团队。因此对于一些产品和团队，可能VC不敢投、圈内基金不敢投，但是我们敢投。因为梦工厂的成长过程是坎坷的，经历了不少风风雨雨才取得今天的成绩，我们有感悟，更多的是教训。不管在任何场合，我们很愿意和创业团队、合作伙伴乃至同行分享这些教训。 　　作为游戏行业内新晋投资人，我们并不挑剔，我们会发现产品或团队潜在危险，也会给予及时的忠告，当梦工厂和团队相加后有能力抵御这些潜在危险时，合作必然能建立起来。 　　笔者相信网络游戏投行中，所有的投资人都真诚希望团队能够迅速成熟，正如我们所见，任何一个投资人都在努力辅导创业团队，期望游戏行业更稳健、快速地发展。笔者后续的文字中，将从团队素质、美术、程序、策划四个部分跟大家分享容易出现的致命问题，以求业内多一些成功的喜悦，少一些失败的无奈。 　　第一个问题：团队有潜力么？ 　　关于团队，不同的投资人有不同的考察手段。巨人投资总监许怡然曾经总结过8条，他认为作为创业团队带头人的主策划如果具备这8条实力，成功概率就很大了，笔者很是喜欢，抄录如下： 　　1、极强的逻辑能力 　　2、虚心 　　3、EQ高 　　4、三思而后行的思维习惯 　　5、快速抓住重点的能力 　　6、团队组织能力 　　7、掌握基本功 　　8、创业激情激情 　　以上8条，自然也是我们考察团队的重要指标，笔者不再赘述。另外，我们还会考虑以下几个方面： 　　团队的诚信。我们认为团队缺乏诚信很难有大造化，尽管这个行业有一些人通过投机取巧活得蛮滋润。我们不建议创业团队提供很花哨的计划书，把主要核心人员吹的天花乱坠——这些都是不明智的做法，投资人会认真审查核心成员背景，一旦审查结果偏离了创业团队的介绍，就会有一个巨大问号被打上。 　　开放的态度。笔者曾经与一些很自信的团队沟通，他们以保密的理由拒绝介绍自己的核心人员，信誓旦旦：“给我一点钱，我们还给你一个惊喜”，每当遇到这样的情况，笔者总是哭笑不得，投资可不是谈恋爱，我们只希望规避掉能规避的风险，然后去搏一些收益，“惊喜”二字对于投资人来说太过浪漫了。投资人大多谨慎且诚信，不会在有意无意间泄露投资对象任何秘密，即使团队重要成员依旧在打工，也可以实实在在告诉投资人，反而会是加分项。 　　产品要公开。遇到不肯拿出产品给投资人看的团队时，笔者很是疑惑。大凡产品上市，一个很重要的推广工作叫做“预热”，运营商生怕玩家不知道将会有款产品上市，早在测试前就不断放风乃至炒作，以形成玩家期待。如果团队拿自己的产品藏着掖着，投资人一定不会想这个产品多么优秀多么能卖钱，反而会担心是不是太丑无法见婆婆。对于产品，笔者建议创业团队最好能拿出来给投资人看看，大多情况下，投资人会提供很多有价值的意见。要知道几乎所有投资人都是在行业里摔打很多年，经验很丰富教训也不少，既然能大把的银子掏出来给创业团队，没点道行谁敢轻易碰这个行当？笔者认为，一个能够频繁与投资人接触的团队，成长一定是很快的，即使没有拿到投资，投资人的经验和教训也能学去不少。所以，创业团队们，大大方方把你们的产品拿出来，让有经验的人来评判指点，成长就是从害羞和被批判开始的。 　　跳槽不能多。有那么一个案例，创业团队成员各个优秀，业绩辉煌，但几年来团队整体跳槽n次，甚至不到1年就有一次跳槽。对于这样的团队，笔者很是担忧，要知道，一个产品研发出来至少需要12~18个月，运营前期筹备和运营检验，还要12~18个月，频繁跳槽的结果，必然会让团队停留在某个历史水平。网络游戏这个行业是瞬息万变，团队停留在历史水平上很容易被淘汰，收购价值会严重缩水。对于跳槽问题，投资人会认真考虑团队承载压力能力和责任心两个问题，毕竟，如果团队承载不了压力而放弃对投资人应担负的责任时，投资人不会自己偷偷哭，而是会提醒其他投资人这个团队做过不适当的事情。 　　节约是好事。投资人大多是比较节约的，节约也是财富累积的途径之一。去年有个投资人跟笔者抱怨，他投资一个创业团队，创业团队核心人员薪水高的让人无法相信，两千万资金不到两年被当薪水发完了，产品还没出来，还需要至少一千万的追加投资才能完成产品，急啊。创业者拿到别人的投资时，投资人希望创业者继续以创业的心态对待，节约行事，如果创业者做的好，即使将来遇到困境，投资人也愿意帮助创业者继续融资。节约是小事，在投行中却是小中见大。 　　第二个问题：浪费了太多的钱和时间在美术上？ 　　美术是玩家第一感受，也是投资人第一感受。在游戏研发中，美术成本占据很大一块，工作量大、周期长、返工多。很多团队创业伊始美术不过关，千奇百怪的问题都有可能出现，所有问题都应该在产品初期解决，否则到产品后期，会浪费很多钱，也会浪费很多时间，不排除有些创业团队由此倒下。也许有些创业团队认为美术是见智见仁的事情，其实不然。好的美术效果，绝大多数玩家都能接受，而差的美术效果，很难被玩家接受。那是不是美术效果一定要去追求极致？笔者认为未必，一来成本太高，二来玩家玩游戏玩的并非是美术。创业者只要把握一个“度”就可以了，这个“度”就是玩家不感觉别扭能接受。如果创业者很有钱的话，笔者坚决支持创业者去创造令人心旷神怡的美术效果。即使不做美丑评判，笔者依旧遇到过一些美术问题，分享如下： 　　画面要合理。如果一棵椰子树长在了华山，很多人会笑……实际上笔者看到了太多这样的情况，画面很漂亮，色彩搭配也很好，就是看上去总觉得不对劲儿——大片椰子树长在华山地图里，违背常理。虽然是常识性的错误，不仔细还真发现不了，这种情况往往会制造笑话，玩家如果玩这样的游戏会在同伴面前抬不起头。画面的合理性大部分玩家说不出来，但是内心里能感受到别扭，别扭的结果就是玩家选择离开。 　　定位别迷茫。产品做给谁，就要选择适合这个人群的风格，如果一款Q版的全视角3D游戏上市，玩家会很郁闷。一般情况下，我们会认为Q版游戏更吸引女生，实际上绝大多数女生因为生理上原因不能适应全视角游戏，她们会头晕。这样，Q版本3D全视角游戏就吸引不了女生，男生自然也不会来，况且大多男生不喜欢Q版，男生玩Q版原本就是冲女生去的。可能大家有注意到，女生玩布娃娃跳橡皮筋时，男生在舞枪弄棒，后来女生开始喜欢漂亮衣服学习化妆时，男生还是舞枪弄棒，男生喜欢的东西和女生喜欢的东西肯定不一样，产品做给谁，美术就要依照谁的喜好来定位。定位的错误，必然会注定游戏无法火起来，一个项目立项之初一定要准确定位，美术风格要按照产品定位来确定，定位迷茫的时候要做出成功产品真的比中个500万彩票还难。 　　精细的悲哀。研发者总是希望把事情做到极致，一个怪物模型三千个面，一个主角模型五千个面，看上去确实精致，倘若是2D产品倒也不错，可偏偏是3D的产品，据说还有国战。笔者当时问主程，你们的游戏需要什么的计算机才能玩？有多少玩家会买这么好的计算机？常规的3D游戏，主角1200~1500面已经很不错了，面数太多，普通的计算跑不动，如果再有国战，同屏能支持多少人呢？现在的图形运算技术水平能做到3D游戏同屏支持几十人已经很不错了，对于三、五千面的主角模型，真的很担忧国战如何去打起来。等到发现因为美术太精细导致产品无法上市，修改起来可就麻烦大了。 　　动作要自然。美术工作中，调动作是个技术活儿，骨架太多占用资源，骨架太少动作就很难调好，需要动作美术具有扎实的功底。国内有几家政府机构（北京上海都有）是提供动作捕捉服务的，找个比较潇洒人把动作比划比划捕捉下来，肯定比一点一点调出来的动作要自然的多。太僵硬的动作会让玩家感觉不舒服，游戏制作的大忌。 　　花钱买壁垒。对于2D游戏，表现力自然是要差一些，如果非要加上换装系统和很炫丽的技能表现，那无疑是花钱买壁垒。笔者有见过超过4G的2D游戏客户端，完成度才60%。研发者很自豪地宣称他们的产品是最炫的2D游戏，已经投入两千多万，研发了三年多，一定会有非常好的卖相。笔者很担忧，几乎所有的研发商都在想尽一切办法让客户端变小，一个4G甚至更大的2D客户端，玩家凭什么去下载呢？大陆网络状况不好，业内普遍认为客户端越大，吸引玩家的成本就越高，所以，游戏千万不能为了刻意追求换装和炫丽技能表现而把客户端弄的太大。——我们不要提《永恒》吧，毕竟盛大是盛大，有几家公司能望其项背？ 　　第三个问题：程序是地基，够结实么？ 　　创业团队见到投资人时，首先介绍主程和引擎稳定性吧，即使首先介绍了主策划，投资人往往听不到什么的，他们最关心策划这个美丽的大厦会建设什么样的地基上，地基不稳，稍有风吹草动就会酿成海地那样的巨大灾难。前两年，业内大佬会说，一款游戏只要不宕机回档就能赚钱。随着行业逐渐成熟，很多团队已经能够把握程序底层的稳定性，运营商更看重产品的其他元素，但还是经常有创业团队无法把握程序底层稳定性而重复，让人看了心痛。程序稳定性问题相对复杂，笔者挑选几个常见的来谈谈。 　　注释、备档必须做。这个问题是程序员的基本素养，可是为什么那么多团队偏偏就忽略这个问题呢？注释没有做，产品快做完了发现个BUG，看不懂自己写的代码了，连续几天不睡，熬出兔子眼依旧解决不了问题。要是中途换程序，接手者死的心都有，唯一的办法就是重新来过。关于备档，笔者是知道有主程因为没备档自己把自己的电脑砸了的，他重新设计了架构，做了两个多月后发现这个架构不可行，必须放弃，可原来的代码呢，没备档！无注释、不备档是低级得不能再低级的错误，直到现在，每天都有人在继续演绎。 　　千万别宕机!再好的程序员都不是神，所以每几千行代码产生一个BUG是可接受的。一款游戏产品，哪怕去解决上万个BUG都可以，但绝对不能允许运营中出现宕机回档，一次回档会流失10%的玩家，几次以后一个服就废了。 　　支持多少在线?这个问题是投资人肯定会问的，机器人测试数据仅仅作为参考。项目初期，程序出来之后不要着急上美术、上系统，先放出去做两次真人压力测试具有绝对的必要性。等一切都做完了，准备上市了，做个真人压力测试，一组服务器只能支持百把人在线，那死的才冤，老天要给美术和策划下雪的。我们不建议一组服务器承载太多人，1000~2000就合适了。有团队介绍服务器承载能力时说一组三台服务器可以承载上万人在线，当时就把笔者吓傻了。承载上万人在线这好像不可能，即使可能，运营时就等外挂来挣你的钱吧。 　　数据交换要合理。客户端和服务器数据交换量的多少是一个游戏程序质量的重要指标，我们不推荐太多或太少的数据交换量，太多，服务器承载能力会下降，带宽占用过多导致成本上升，交换量太少，大量关键数据在客户端运算，外挂会横行。即使数据交换量适中，随着同屏玩家数量增加，交换数据量也会呈现级数上升。有一次问创业团队主程玩家同步范围有多大，回答是整个地图同步，这个显然就是常识性错误了，假如一个地图有10个玩家，那么每个玩家传输数据量就是10次方，如果有100个玩家就是100次方，那得需要多少带宽啊。通常，我们建议同步范围有两个屏幕那么大就足够了。至于服务器验证数据，有金钱、等级、属性点、技能点、装备属性点、伤害演算、红蓝验证、坐标验证、状态、背包物品、出生、死亡等一些重要数据验证就差不多了。 　　创新的悲哀。也许是因为职业缘由吧，大多主程是比较低调务实的，很少有人宣称自己有什么多么得意的创举，常见的反而是主策要求实现这个功能那个功能。前几年很多团队都渴望做大世界，几年过去，实现者寥寥，可眼下仍旧有团队不惜代价去攀登尸山，对此，业内并不十分看好。程序上的创新，风险很多，我们不建议创业团队投入太多精力去做哗众取宠的事情，几个人数月的工作换来一个亮点，这个亮点未必能在推广和运营中起到什么作用，大多会沦为牵绊。绝大情况下，创新的主意来自策划，这个自然也是策划程序交火的阵地，两个字“好难”。 　　DB要够大。很多开发者没有注意到这个问题，总认为有很多数据了，足够了吧。实际上，一个产品运营时，运营者要分析大量的数据，有些运营商甚至要分析聊天记录。笔者曾遇到一些数据缺失导致的被动，例如玩家平均在线时长、道具交易记录、平均在线、玩家流失等级、在线和挂机数量、账号角色等级数据……等等，这些重要数据缺失会给运营带来很大的困难，即使运营高手也很难把这样的产品运营的多么好。笔者建议一款产品数据库构架伊始，请有运营经验的人对存储数据做个评估，对于运营者来说，数据越全面越详细越准确越好。 　　第四个问题 产品好玩么？ 　　众多玩家在一个游戏里长时间呆下去的原因是游戏好玩，“好玩”二字是一款游戏产品精华所在，一个游戏产品的精华毋庸置疑是主策带领下创造出来的。当一个创业团队的主策仅仅是个配角时，投资人会很担心团队的未来。美术是游戏外在表现，策划内容是游戏内涵，程序作为基础承托起游戏的外在表现和丰厚内涵。主策划不仅仅是创意制造者面对所有的玩家，还要懂美术和程序甚至要懂运营，作为一个产品研发的核心协调者面对内部团队，实际上，主策划的水平往往可以决定一个游戏产品的品质。相对于美术和研发，策划表现张扬一些投资人是可以接受的，不过投资人害怕策划表现出文人相轻的心态。作为投资人，笔者不奢望遇到无可挑剔的主策划，毕竟天外有天。和不同的团队接触中遇到过不少策划方面相对致命的问题，列出几个重要的，以求探讨： 　　山寨不可怕，可怕的是不会山寨。天下文章一大抄，好文章大多是参考很多人看法汇总起来并提出自己鲜明的观点，更多的平庸文章同样抄来抄去却没有自己的东西而湮没在别人的观点里，可见，并不是每个作者都是好作者。网络游戏发展史也是不断汇总和创新的过程，抄来抄去无可厚非，怕最怕没有主见的策划，看人家有结婚系统，自己也上个结婚系统，看人家有自动寻径系统自己也赶紧上一个……你说，一个只有男生和人妖的游戏里，结婚系统有什么意义?看到一个游戏火了，一分析，这个系统好，那个系统好，统统弄来放自己游戏里，等产品上市才发现根本不是那回事儿。游戏产品里应该有哪些系统，不应该有哪些系统是很有学问的事情，如果我们知其然不知其所以然，只能抄到没有精髓的皮毛，这样去抄，不抄也罢。成功的游戏产品都是触动了玩家内心最痒的那块儿肉的，各种系统只是到达那块儿“肉”的途径和工具。山寨，首先要山寨到那块儿“肉”，否则必然是山寨失败。 　　那块儿“肉”啊。03年有位同事运营一款3D产品，主管老总很怀疑地问做游戏能赚钱么?同事给他一套极品装备（现在想来这种行为是多么愚蠢！），他玩了不到一周同意给部门增加宣传费用，他说“太爽了，只要我上去身后就跟一群人，这个说‘老大，你背包太重了，小弟帮你背点东西吧’，那个说‘老大，衣服真漂亮，借小弟穿一会儿吧’，还有说‘老大，小弟穷疯了，手指缝漏几个铜板给小弟吧’，我现在都有几十个徒弟了……”。现在大家知道，游戏就是童话，玩家现实生活中不能获得的愿望、不能得到情感都转移到游戏里了（如今房价很高，有谁做款给女性打扮房间的游戏，说不准会火——纯属玩笑，姑妄听之）。笔者见过一款产品，一个服里规划了20个国度，先申请者先得，20个国度满了，后面的玩家只能加入某个国度做臣民，笔者听完后问为什么不设计2000个国度？回答是地图没那么大，只能有20个。这样的游戏不会火的，玩家在真实生活里就是在屋檐下的，来你游戏里还得在屋檐下，谁会来？ 　　山寨版范进中举带来的启示。范进54岁中举（一说54岁中秀才，未考），山寨说法是范先生文章很不错的，只因开头太差考官根本看不下去导致次次落榜，中举原因是考官如厕恰好拿了他的卷子当手纸，考官便秘，厕间无聊读其文章不想越读越妙，终于选中。有些产品，玩家进去做一大堆任务，忙活了几个小时没感觉，那这个产品就惨了。游戏开头的任务引导是很重要，但不要试图一开始就把所有的游戏功能、游戏玩法都告诉玩家，这样是逼玩家走人。我们认为，玩家应该在进入游戏后前5~10分钟内获得第一次快感，然后应该在半个小时左右获得第二次快感，两个小时内获得第三次快感……随着游戏快感的不断出现，玩家就会玩进游戏，不会在早期流失。好的开始是成功的一半，至于玩家的快感如何设计，策划们更专业。 　　职业平衡设计误区。有见过一款设计了18个职业的游戏，头都大了，职业平衡如何去计算？数值策划就算是一群数学博士后，恐怕也难平衡18个职业的属性点和装备带来的攻击和防御。常规的三、四个职业几乎到达了平衡计算的极限，所以笔者不建议游戏设计时设计太多职业，如果策划者要增加五行阴阳之类的属性，那职业设计就越少越好。设计者不可能去验证所有可能的组合数据（这个组合可是天文数字），只能验证极限状态组合平衡性，玩家不会买你的账，他们会很容易寻找到平衡性的漏洞破坏游戏平衡导致运营失败。 　　交互性是网游的真谛。05年有大佬说过，其实网游就是一个大聊天室，一语道破网游交互性实质。成功的网游都具有良好的交互性，也正是因为交互，玩家才聚集在一起，才有友谊和仇恨，才有玩家肯送钱来，友谊和仇恨是社交愉悦感的来源。很多策划天马行空地为玩家设计各种各样的交互，但玩家根本不买账。其实，只要一种交互方式被广泛接受，游戏就很容易成功，但被广泛接受的交互方式往往又是出人意料的。投资人会认真考察游戏的交互性，最简单的判断原则是：够不够多，够不够方便。 　　怎么挣钱不是主策划考虑的事儿。“第一款游戏，根本没考虑怎么赚钱，却赚了很多钱；第二款游戏，考虑游戏性的同时也考虑了如何赚钱，赚钱不多；第三款游戏，时刻在考虑如何赚钱，结果没赚到什么钱。”这是一个非常资深的主策划对自己制作的三款产品感慨。主策划最重要的工作是保证一款游戏产品的可玩性，没有可玩性，一切都是白搭。笔者甚至有极端的观点，主策划只考虑游戏产品的可玩性就够了，至于如何收费怎么收费让运营者去考虑。这个极端的观点是被反驳过的，不过还是愿意拿出来供大家批判，一款产品丧失了可玩性，无论如何都不能赚钱的，可玩性是游戏产品的根本。 　　结语：所有创业团队都值得敬畏 　　网游行业是我国唯一一个民间资本能自由进出的暴利行业。这个行业不仅仅催生了大陆最年轻的首富，还催生了大批亿万富翁。面对创业团队时，笔者总是怀着敬畏的心情，虽然他们现在拿很低的薪水，在糟糕的环境下工作，每天为钱发愁，但明天，他们的梦想随时能成就他们成为亿万富翁。 　　谨以此稿祝福哪些已经或正在成为亿万富翁的勇士们！
]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=161</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Array和Object 两种实例化方法效率的比较</title>
		<link>http://www.riastep.com/?p=159</link>
		<comments>http://www.riastep.com/?p=159#comments</comments>
		<pubDate>Sat, 06 Feb 2010 03:48:59 +0000</pubDate>
		<dc:creator>kenny</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=159</guid>
		<description><![CDATA[Array和Object
其实
var list:Array = new Array;
var arg:Object = new Object;
比
var list:Array = [];
var arg:Object = {};
慢
证明：
new Object和{}进行比较
var length:int = 1000000;
for(var i:int = 0; i &#60; length; i ++){
  var list:Object = new Object;
}
trace(getTimer());
// trace: 754
var length:int = 1000000;
for(var i:int = 0; i &#60; length; i ++){
  var list:Object = {};
}
trace(getTimer());
// trace: 547
new Array和[]进行比较
var length:int = 1000000;
for(var i:int = [...]]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=159</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Actionscript3弱引用</title>
		<link>http://www.riastep.com/?p=157</link>
		<comments>http://www.riastep.com/?p=157#comments</comments>
		<pubDate>Sat, 30 Jan 2010 11:01:40 +0000</pubDate>
		<dc:creator>kenny</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=157</guid>
		<description><![CDATA[转自http://www.rkuk.org/post/3.html
弱引用英文叫做weak reference，与之相反的是强引用（strong reference）。引用不是对象本身，而是类似于指向对象的一个指针。通常都说当至少还存在一个引用指向某个对象的时候，这个对象就不会被gc，这里所说的引用就是强引用，而不是弱引用。反过来说，即使有N多弱引用指向某个对象，而没有一个强引用指向该对象时，这个对象也会被gc，当gc发生后，所有的弱引用指向的对象就不存在了。这就是强引用与弱引用的本质区别。 
AS3中常用到弱引用的地方有addEventListener方法和Dictionary类。
addEventListener方法的参数表为addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false)。其中第5个参数表示是否使用弱引用。也就是说当useWeakReference=false时，EventDispatcher.addEventListener就会在EventDispatcher对象中添加一个对listener这个函数对象的强引用；而当useWeakReference=true时，EventDispatcher.addEventListener方法在EventDispatcher对象中添加的是对listener的弱引用，此时如果这个listener函数对象只是作为EventDispatcher对象的征听器被引用时，那么gc执行时就会回收这个listener函数，从而EventDispatcher对象的这个征听器就不存在了。用简单的代码来证明一下：





weak reference of addEventListener 1
[复制代码]






var sp:Sprite = new Sprite();


var eventHandler:Function = function(e:Event){ trace(&#8220;event fired&#8221;); };


//添加弱引用


sp.addEventListener(Event.ENTER_FRAME,eventHandler,false,0,true);


//取消eventHandler对函数的引用


eventHandler = null;


//强制进行gc，此函数只能在debug版的fp中才有效


System.gc();


/*


运行结果：因为sp.addEventListener中添加的是对eventHandler函数的弱引用，当唯一指向函数的强引用eventHandler变成null以后，这个征听器函数就会被gc。不过gc不是立即发生，因此要强制进行gc后才能看到在输出窗口中不会有event fired输出。如果在sp.addEventListener使用强引用，那么当eventHandler变成null以后，即使进行强制gc，还是会不断输出event fired。因为征听器函数还作为sp的一个征听器被引用，而且是强引用，因此就不会被gc。


*/



上面的例子留下来了一个问题：如果sp.addEventListerner添加的是强引用，当指向征听器函数的eventHandler设为空后，这个征听器函数仍然不会被gc，那么怎样才能让它被gc掉呢？答案很显然，也就是当sp被gc掉以后，那么这个征听器函数也会被gc掉，因为sp指向的对象中保留了对征听器的唯一强引用。sp怎么才能被gc掉？从AS2走过来的人往往都容易想到removeChild方法。但是AS3中的removeChild方法作用只是把一个DisplayObject对象从Display List中删除，同时也删除Display List中所存在的对这个DisplayObject对象的引用。但是如果这个DisplayObject对象还被其它变量引用时，它就不会被gc。所以说removeChild是必须的，但不足够，还需要删除Display List之外的所有引用才行！当然如果这个DisplayObject不在Display List中的话，就没有必要removeChild。下面也用一个例子说明一下： 





weak reference of addEventListener 2
[复制代码]






var sp1:Sprite = new Sprite();


var sp2:Sprite = new Sprite();


var eventHandler:Function = function(e:Event){trace(&#8220;event fired&#8221;);};


//sp1添加对eventHandler的强引用


sp1.addEventListener(Event.ENTER_FRAME,eventHandler);


//sp2添加对eventHandler的弱引用，用于查看sp1被gc后征听器是否也被gc


sp2.addEventListener(Event.ENTER_FRAME,eventHandler,false,0,true);


//取消eventHandler对函数的引用


eventHandler = null;


//取消sp1对Sprite对象的引用使其可以被gc，因为Sprite对象没有添加到Display List中，所以不需要removeChild。


sp1 = [...]]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=157</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>网游名词解释</title>
		<link>http://www.riastep.com/?p=156</link>
		<comments>http://www.riastep.com/?p=156#comments</comments>
		<pubDate>Sat, 23 Jan 2010 04:26:59 +0000</pubDate>
		<dc:creator>Nobody</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=156</guid>
		<description><![CDATA[1、什么是网游？
2、什么是MMORPG？
3、什么是MMORPG2.0？
4、什么是外挂？
5、什么是私服？
6、什么是防沉迷系统？
什么是网游？ 
　　网游是网络游戏（Online Game）的简称，如今已是中国玩家非常熟悉的一个字眼。网游从早先的一种免费PC游戏形式，经过若干年的发展，时至今日已成长为一个相当成熟而庞大的游戏产业。单从中文字面上理解，任何有联网功能的游戏，似乎都称得上是网络游戏，而实际上网游的概念相对要狭窄一些，换句话说更贴近Online Game的本意，只有完全依靠在线形式、不具备单机游戏功能的游戏才算是真正的网游。这也是为什么像《反恐精英》、《雷神之槌3》、《魔兽争霸3》这样具备联网功能的游戏不能称其为网游的原因。
　　中国网游最早的雏形要追溯到MUD时代，MUD的英文全称是Mutiple User Dimension，是一种文字形式的多角色扮演游戏，中国人按照缩写的译名称之为“泥巴”，由于MUD游戏让很多玩家痴迷到难以自拔的程度，因此也有很多人形象地称其为“泥潭”。文字MUD游戏在上世纪90年代中后期的中国风靡一时，尤其是在各大高校广泛地开枝散叶，其中的代表有《金庸群侠传》、《风云》、《西游记》、《侠客行》等系列及衍生作品。到了1999年4月，笑傲江湖网站推出了国内最早的图形MUD游戏——《笑傲江湖之精忠报国》，为网游向图形化发展迈出了第一步。如今的网游作品无论是引擎、画面的精美程度以及可玩性都大大超越初期的作品，但在核心架构上仍然或沿用、或遗留着前辈们的影子。
　　步入2000年后，各种图形化网游开始在中国呈现出抬头之势，并且随着付费形式的顺利开展，网游产业的脉搏逐渐清晰化，一个对未来许多行业有着巨大推动作用的庞大产业，就在世纪之交时嫣然闪现出来。从2001年开始，韩国网游作品大举进入国内，为中国网游产业的迅速发展起到了推波助澜的作用。截至2003年底，中国互联网用户中已有众多游戏玩家，2003年中国网络游戏市场规模预计将超过20亿元。这就是网游，一个让人瞠目结舌的PC游戏市场。
什么是MMORPG？ 
　　MMORPG,是英文“Massive Multiplayer Online Role Playing Game”的缩写，意为“大型多人在线角色扮演游戏”。是电脑游戏中网络游戏的一种。
　　 此类游戏分为客户端和服务器端两部分。玩家从客户端通过互联网连接，登陆服务器端后才能进行游戏。玩家的资料保存在服务器端。
　　 游戏的过程，是玩家扮演的角色和其它玩家控制的角色在网络虚拟空间中实时互动。而非玩家扮演的角色（即NPC）则往往是在游戏中提供特殊服务的人物。
什么是MMORPG2.0？ 
　　MMORPG2.0是MMORPG1.0的升华，除去技术的升级以外，更加注重游戏与玩家的多层次交互，将游戏彻底与玩家融合在一起，在新的游戏中，玩家对自己的出身、国家、朋友、团队、乃至游戏中的一切拥有选择权，所有的主动权都在玩家自己手中。
　　MMORPG2.0 与MMORPG1.0的区别
　　MMORPG1.0中，玩家进入由游戏开发商已经既定的游戏背景，踏上冒险旅程；
　　MMORPG2.0中，玩家进入的是一个由游戏开发商搭建的框架，成为唯一一个游戏中的主人公，并开创一个新的游戏背景，打造一个全新世界。玩家可以通过特定的任务自主游戏的历史变迁。
　　MMORPG1.0中，强调游戏是单机版无法达到的玩家之间的互动。
　　MMORPG2.0中，强调的是在互动之上，如何另玩家成就 MMORPG1.0中无法感受到的“王者之风”。
　　MMORPG1.0游戏的过程，是玩家扮演的角色和其它玩家控制的角色在网络虚拟空间中实时互动。而非玩家扮演的角色（即NPC）则往往是在游戏中提供特殊服务的人物。
　　MMORPG2.0则恰恰相反，是由玩家扮演的角色与而非玩家扮演的角色（即NPC）在网络虚拟空间中实时互动，并向这些NPC以及其他玩家提供特殊服务。
　　MMORPG1.0中，玩家不得不通过杀怪—得到经验值—升级—再杀怪的方式来进行角色等级的提升。
　　MMORPG2.0为玩家准备了完整详尽的任务升级系统，这个设计突破的传统网游玩家对于升级再升级的厌倦。
　　在MMORPG1.0中，为了延续游戏的生命，开放商会不断开放新地图和新怪物来增加游戏的新鲜度。
　　与此不同的是，通过任务的逐渐完成与游戏角色各类属性的不断提升，就象哥伦布发现新大陆一样，玩家可以在MMORPG2.0中成为哥伦布，去探索已经存在的新的世界地图，而这块地图，将只会对发现者开放。
　　当然，在MMORPG2.0中的精彩远远不止这些，小到道具的名称、技能的搭配，大到游戏的历史背景，例如游戏中的国家、国家的经济发展、土地的拥有量等等，都会由玩家自主创建，您可以实现您想要打造的游戏世界！
什么是外挂？
　　由于众多玩家参与游戏，随着游戏参与程度的加大，便出现了玩家修改游戏程序的现象，俗称外挂（“hack tools”，又叫“cheating program”）。所谓外挂就是指某些人利用自己的电脑技术专门针对一个或多个网络游戏，通过改变网络游戏软件的部分程序，制作而成的作弊程序。用户利用外挂这种作弊手段可以轻易得到其他正常用户无法得到、或必须通过长期运行程序才能得到的游戏效果。他外挂的表现有很多种，有加速器、封包等，其最显著的特征就是为使用外挂的游戏者带来不同于正常用户的游戏效果，它能使使用外挂者比正常用户奔跑快、攻击威力加大、获得更多的经验值。外挂的最初意思是外部调用程序的通俗称法，接近于Windows的API（应用程序接口）。但外挂之于网络游戏来说，主要指那些可能对游戏的运行造成不良影响的相关程序。主要有自动工作、游戏加速、能力加强等功能戏道具等。
什么是私服？
　　私服是未经版权拥有者授权，非法获得服务器端安装程序之后设立的网络服务器，本质上属于网络盗版，而盗版的结果是直接分流了运营商的利润。相对于官服而言未经版权拥有者授权，以不正当手段获得游戏服务器端安装程序之后设立的网络服务器，它属于网络盗版的一种，是侵害著作权的行为。严格意义上的所谓私服是指一个没有得到网络游戏的制作商法定许可而私自存在并运营的服务器，它在技术和服务实力上都和正式的官方服务器不存在可比性，因为这些技术和服务的存在就是不合法的。私服存在的主要目的同官方服务器是一样的，都是向玩家收费以获利。
什么是防沉迷系统?
　　新闻出版总署与教育部、公安部等8部委9日联合下发《关于保护未成年人身心健康实施网络游戏防沉迷系统的通知》。该通知规定，防沉迷系统的实施将按三个步骤进行：2007年4月15日——6月15日为国内各网络游戏企业需按照《网络游戏防沉迷系统开发标准》在原有网络游戏中开发防沉迷系统，2007年6月15日——7月15日为系统测试时间，2007年7月16日起正式投入使用。
　　青少年沉迷网络游戏的主要诱因是大多数网络游戏都设置了经验值增长和虚拟物品奖励功能，需要获得上述奖励，主要靠长时间在线累计获得，因而导致部分青少年沉迷其中。网络游戏防沉迷系统就是针对上述未成年人沉迷网络游戏的诱因，利用技术手段对未成年人在线游戏时间予以限制。
　　《网络游戏防沉迷系统开发标准》的核心内容是：未成年人累计3小时以内的游戏时间为&#8221;健康&#8221;游戏时间，超过3小时后的2小时游戏时间为&#8221;疲劳&#8221;时间，在此时间段，玩家获得的游戏收益将减半。如累计游戏时间超过5小时即为&#8221;不健康&#8221;游戏时间，玩家的收益降为0，以此迫使未成年人下线休息、学习。
　　其中将&#8221;健康&#8221;游戏时间定为3小时的依据是：根据青少年的身心发育状况、网络游戏的基本特点，以及对未成年人的调查分析，累计3小时以内的在线游戏时间既无损于未成年人的身心健康，又能使他们适当享受到游戏的乐趣。如下一盘围棋的时间一般也需2-3小时。
　　而《网络游戏防沉迷系统开发标准》中的&#8221;游戏收益&#8221;定义为：&#8221;游戏收益=游戏中与游戏角色成长升级相关的所有数据（包括但不限于经验值、荣誉值、声望值、称号等）的提升＋获得的包括道具、装备、虚拟货币等在内的虚拟财产&#8221;。
　　收益为50％，指游戏中与游戏角色成长升级相关的所有数据和获得的包括道具、装备、虚拟货币等在内的虚拟财产均减半。
 
RiaStep版权与免责声明：本稿件转载其他媒体是为传播更多的信息，并不代表本站认同其观点，本站不承担此类稿件侵权行为的连带责任。如您因版权等问题需要与本站联络，请联系  ccinclude@gmail.com
]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=156</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex – Producer Consumer 实例</title>
		<link>http://www.riastep.com/?p=119</link>
		<comments>http://www.riastep.com/?p=119#comments</comments>
		<pubDate>Tue, 05 Jan 2010 06:34:41 +0000</pubDate>
		<dc:creator>Nirvana</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=119</guid>
		<description><![CDATA[在上一篇文章（Flex – Producer Consumer 讲解）我们粗略了解一下在Flex里Message通讯中Producer组件和Consumer组件的简单理论知识，这篇文章中让我们一起来看一个简单的实例，看看Producer组件和Consumer组件的具体使用！
上代码，大部分都在注释中解释的很清楚了！！！（如果哪里讲的不清楚或者有错误，欢迎与我们沟通交流！）
ChatRoom.mxml
&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;
&#60;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; creationComplete=&#8221;initChatRoom()&#8221; layout=&#8221;absolute&#8221;&#62;
 &#60;mx:Script&#62;
  &#60;![CDATA[
   //导入相应的类
   import mx.controls.Alert;
   import mx.messaging.messages.AsyncMessage;
   import mx.messaging.events.MessageEvent;
   import mx.messaging.events.MessageAckEvent;
   import mx.messaging.events.MessageFaultEvent;
   import mx.rpc.Fault;
   import mx.messaging.messages.AcknowledgeMessage;
   import mx.messaging.Consumer;
   import mx.messaging.Producer;
   
   //声明Producer和Consumer
   private var producor:Producer;
   private var consumer:Consumer;
   
   //程序在creationComplete后自动调用
   private function initChatRoom():void
   {
    initProducer();
    initConsumer();
    //为“发送”按钮的单击事件注册处理函数
    sendBtn.addEventListener(MouseEvent.CLICK,sendBtnHandler);
   }
   //初始化一个Producer用来发送消息
   private function initProducer():void
   {
    //实例化一个Producer用于发送消息
    producor = new Producer();
    //设置消息服务的目标，应与messaging-config.xml文件中的destination条目id相匹配
    producor.destination = "chatRoom";
    //为acknowledge事件注册监听函数，当收到已发送消息的确认结果时触发该事件
    producor.addEventListener(MessageAckEvent.ACKNOWLEDGE,ackMessageHandler);
    //为fault事件注册监听函数，当发生消息错误时调度fault事件
    producor.addEventListener(MessageFaultEvent.FAULT,faultMessageHandler);
    //使用的远程目标的子主题
    producor.subtopic = "topic";
   }
   //初始化一个Consumer用来订阅、接受消息
   private function initConsumer():void
   {
    //实例化一个Consumer用于订阅和接收消息
    consumer = new Consumer();
    //设置消息服务的目标，该值应与messaging-config.xml文件中的destination条目id相匹配。
    consumer.destination = "chatRoom";
    //为message事件注册监听函数，当Consumer接收到消息时调度
    consumer.addEventListener(MessageEvent.MESSAGE,messageHandler);
    //使用的远程目标的子主题
    consumer.subtopic = "topic";
    //订阅远程目标
    consumer.subscribe();
   }
   //acknowledge事件处理方法，消息发送成功调用该方法
   private function ackMessageHandler(event:MessageAckEvent):void
   {
    trace("消息发送成功...");
   }
   //fault事件处理方法，消息发送失败将调用该方法
   private function faultMessageHandler(event:MessageFaultEvent):void
   {
    Alert.show("信息发送失败","提示");
   }
   //message事件处理方法
   private function messageHandler(event:MessageEvent):void
   {
    output.text += event.message.headers.nickName + " 说: " [...]]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=119</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>坚强的力克</title>
		<link>http://www.riastep.com/?p=149</link>
		<comments>http://www.riastep.com/?p=149#comments</comments>
		<pubDate>Wed, 30 Dec 2009 05:24:26 +0000</pubDate>
		<dc:creator>Nobody</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=149</guid>
		<description><![CDATA[如果你总是抱怨你的生活，那么，看看无妨。这是对心灵的震撼～

]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=149</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>祝贺《Flash ActionScript 3.0 动画高级教程》中文版出版</title>
		<link>http://www.riastep.com/?p=142</link>
		<comments>http://www.riastep.com/?p=142#comments</comments>
		<pubDate>Wed, 30 Dec 2009 00:59:49 +0000</pubDate>
		<dc:creator>Nirvana</dc:creator>
				<category><![CDATA[业界动态]]></category>
		<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=142</guid>
		<description><![CDATA[    首先代表我们道道工作室祝贺《AdvancED ActionScript 3.0 Animation》的中文版《Flash ActionScript 3.0 动画高级教程》的出版。
    对于程序员，这是一本迟来的经典藏书！之前在学习时曾靠着一本字典翻阅过一段时间英文原著《AdvancED ActionScript 3.0 Animation》，但由于小弟不才，看的也是一头雾水，似懂非懂，前一阵也只抽出一周多的时间把中文版《Flash ActionScript 3.0 动画高级教程》畅快淋漓地看了一番，感触颇深、豁然开朗！
    总体感受，这是一本对“新手”“高手”皆宜的书。对于像我这样的“门外汉”来讲都有深刻的认识和启迪，对于ActionScript高手来说此书也可以做到温故知新，查漏补缺。我们道道工作室成员都是普通的程序员，无力花费太多大洋在amazon.cn，但这本书准备人手一本，而且必须人手一份，作为学习和进阶的宝典、手头的工具书来拥有。相信大家拥有了这本，论坛里或群里类似碰撞检测、音视频控制、寻路及flash中的3D问题会少很多（这也是我个人在主要研究的几个方面）。
    全书总体翻译的质量较高。刚拿到本书时候，见译者众多（hbbalfred ，LiScott ，Y.Boy ，daWei Yang，yujjj ，actions），不免有些担心，一般来说对于一本书如果译者超过3人，在风格和内容的把握上相对难于统一。不过，在看完全书，中文版本基本保持的原书的风貌，虽然在个别词语的翻译上还需要商榷，在翻译上做到了忠实原文，至少我没发现重大的错误。
    作品，应该是作者和译者的公共创造，译者不是翻译机，除了做到真实理解体现原文，还需要能够站在原著的基础上将一些自己的独立思考与实践体会融入其中，没有深厚技术和实践功底的译者恐怕做不到这一点。由衷感慨，这个翻译团队是如此的强大！最后再此，我真诚的感谢诸位对国内flash、as事业的支持与奉献，发自内心的敬佩各位！

PS：说句实话对于本书的封面，本人喜欢第一种设计方案，给人色彩简约、清晰的感觉，的确动感十足，一只腾空而越的小企鹅着实的可爱~~~
RIABook书评活动： http://www.riabook.cn/riabook/111.htm
]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=142</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 3 metadata tags</title>
		<link>http://www.riastep.com/?p=140</link>
		<comments>http://www.riastep.com/?p=140#comments</comments>
		<pubDate>Tue, 29 Dec 2009 10:01:06 +0000</pubDate>
		<dc:creator>Nobody</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=140</guid>
		<description><![CDATA[Flex引入了元数据标签的概念，它告诉编译器如何编译这段Flex 或actionscript代码。大多数人都使用过[Bindable]标签，元数据标签是一种 特殊的标签，它在代码中的作用就是向编译器提供如何编译程序的信息。实际上，这些标签并没有被编译到生成的SWF文件中，而只是告诉编译器如何生成SWF 文件。这篇Post结合网上相关的资料以及Adobe的help resource center的相关材料介绍了16个元数据标签。
[ArrayElementType]
实际上，定义一个数组通常来说是一件很平常的事情，因为数组中的元素可以是任何类型的。不过，使用ArrayElementType元数据标签可以让你定义数组元素的数据类型。下面的例子展示了如何使用[ArrayElementType]：
[ArrayElementType(”String”)]public var arrayOfStrings:Array; [ArrayElementType(”Number”)]public var arrayOfNumbers:Array;
[ArrayElementType(”mx.core.UIComponent”)]public var arrayOfUIComponents:Array;
[Bindable]
Bindable元数据标签是最经常用到的一个元数据标签，因为它使程序组件之间的数据同步变得很容易。Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。绑定数据的时候，你必须先使用元数据标签定义一下数据。Bindable也可以用来绑定到事件。
[DefaultProperty]
DefaultProperty元数据标签用来将一个单一属性设定为某个类的默认属性。它允许在一个容器标签内设定属性，而不用定义属性的名字。一个简单的例子就是一个自定义Button类。Listing 3展示了一个简单的Button类，它将label属性设定为了DefaultProperty。Listing 4展示了label属性是如何在自定义Button标签中作为一个字符串定义的。
[Deprecated]
A class or class elements marked as deprecated is one which is considered obsolete, and whose use is discouraged in the current release. While the class or class element still works, its use can generate compiler warnings.
[Embed]
Embed元数据标签用来导入图片到程序。可以通过两种方式使用Embed。你可以将图片嵌入到ActionScript中并将其指派给一个变量（如同下面代码中的第一个例子），或者你也可以将图片直接指派给组件的属性（使用下面代码中的第二个例子所示的语法规则）。
例1：
[Embed(source=”myIcon.gif”)][Bindable]public var myIcon:Class;&#60;mx:Button label=”Icon Button [...]]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=140</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>浅谈Flex MXML 自定义组件</title>
		<link>http://www.riastep.com/?p=137</link>
		<comments>http://www.riastep.com/?p=137#comments</comments>
		<pubDate>Tue, 29 Dec 2009 07:20:26 +0000</pubDate>
		<dc:creator>Nobody</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=137</guid>
		<description><![CDATA[flex组件编写起来很简单，而编写的形式又分为两种 ，分别一mxml形式或者as class编写，两者都可以，置换直观的朋友都可以采用 mxml形式辨析，但如果你的组件需要分开多个类来写，又或者是想效率高点的话，你可以采用as写
但最终我们都需要一个mxml的组件界面来装载我们的组件。
好，先开始说说 便签。恩，标签，可能很多出学的开发者不大清楚是什么，又或者你经常会在一些第三方或者官方组件文件里看到
[Bindable("dataChange")]
[Event(name="UnloadModule")]
[Inspectable(category="General")]
[ArrayElementType("mx.containers.utilityClasses.ConstraintColumn")]
这些语法。可能你会百思不得其解它有什么用，其实这些就是标签（Metadata ）语法
Metadata 语法主要用于组件属性的一些信息捆绑，使得你可以在mxml或者组件面板里能使用一些简单的便签，如mxml语法里我们经常都会看到的 当在mxml里 输入空格符后就会提示该组件的一些属性跟方法或者事件（其实这些就是标签绑定的显示为文本），但你又会发现往往这些属性，方法或者事件有跟帮助里的名称不一样，这个就是标签绑定的一个特点，其实就是提供了一个别名来捆绑某个方法或者事件，或者属性而已。
现在大家都应该基础了解到标签的用途了，下边咱们来说说怎么编写一个组件，就吸纳各刚才说的，我们有两种形式都可以编写flex的组件，
下边我以简单的 mxml文件为例子说说怎么写，
我们先新建一个项目MyComponent 然后再src文件夹里我们再建立一个名叫 components的文件夹
然后新建一个 MXML Component 文件 并保存到 src目录下的一个名叫 components的文件夹里
默认的我们会看到下边的代码

&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;&#60;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&#62; &#60;/mx:Canvas&#62;
 Canvas &#8212;就是默认的集成组件，当然那哦我们你可以将它改成其他任意的组件，只要下边的命名空间指定好路径就好了
xmlns:mx&#8212;&#8212;这句就是我们的命名空间，我们可以自定义任意一个自己的命名空间，命名空间主要用于区别开
类名的重复等问题，形象的说命名空间就像我们给一个类指定一个文件夹，指定一个路径。
如xmlns:wxsr=&#8217;com.components.*&#8217;
这主要用于指定我们组件的类的位置。也就是包路径

下边我们来修改下这个新建的组件
&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;&#60;mx:TitleWindow xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;292&#8243; height=&#8221;226&#8243;&#62; &#60;mx:Metadata&#62; [Event(name="myComponentTextChange", type="flash.events.Event" )] &#60;/mx:Metadata&#62;&#60;mx:Script&#62; &#60;![CDATA[ [Bindable("text")] [Inspectable(defaultValue="hello word")]  public function set myComponentText(value:String):void { inputText.text=value } public function get myComponentText():String{ return inputText.text }  ]]&#62;&#60;/mx:Script&#62; [...]]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=137</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于 WordPress 不能上传rar类型文件</title>
		<link>http://www.riastep.com/?p=133</link>
		<comments>http://www.riastep.com/?p=133#comments</comments>
		<pubDate>Mon, 28 Dec 2009 13:20:00 +0000</pubDate>
		<dc:creator>Nobody</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://www.riastep.com/?p=133</guid>
		<description><![CDATA[今天上传文件的时候,才发现 wp 居然不能上传rar文件.一上传就提示:

 
File type does not meet security guidelines. Try another
以为是没找到上传的地方,但是找来找去 只有媒体库,有点纳闷
大概的看了下代码,才发现确实是不能上传rar的,但是zip,gzip,甚至exe,js都可以….
修改如下:
打开文件 wp-content/wp-includes/functions.php .
找到函数 get_allowed_mime_types() 这个函数是控制可以上传的类型的,可以看到目前支持上传的格式,就是没有rar
加上一句:
&#8216;rar&#8217; =&#38;gt; &#8216;application/rar&#8217;,
如图:

转载自 Hacder&#8217;s Lab [ http://www.hacder.cn ]
原文链接地址：http://www.hacder.cn/archives/912.html
]]></description>
		<wfw:commentRss>http://www.riastep.com/?feed=rss2&amp;p=133</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
