<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.7" -->
<rss version="0.92">
<channel>
	<title>乐不思蜀</title>
	<link>http://www.dazsnow.com</link>
	<description>China . Design . Life</description>
	<lastBuildDate>Sun, 28 Jun 2009 15:19:46 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>zh</language>
	
	<item>
		<title>AS3录像的基本点</title>
		<description><![CDATA[第一，对不起我这么久没有更新了，我去旅游了然后我在再一次设计摄个博客的主题。
我不在时，Mad Chen (疯的陈？)留个评论说我应该写一些关于录像的事情所以我今天想给你们看怎么用AS3做一个特别简单的定制录放机。

我们能使用Flash的‘FLV放像部件’－ 一个很好通用的工具 － 但是做你自己的还是更有效的，多功能的。
先创造一个‘embedded video object&#8217; (内嵌的录像对象)，在AS3里面这是很简单 ：

var video:Video = new Video&#40;320, 240&#41;;
//创造一个新的录像对象（宽度，高度）
&#160;
addChild&#40;video&#41;;
//加到显示表
&#160;
var nc:NetConnection = new NetConnection&#40;&#41;;
&#160;
nc.connect&#40;null&#41;;
&#160;
var ns:NetStream = new NetStream&#40;nc&#41;;
&#160;
video.attachNetStream&#40;ns&#41;;
&#160;
ns.play&#40;&#34;snooker.flv&#34;&#41;;
//播出录像，用着那个netstream对象

现在你可以试一下，就能看到录像但是还有个出错消息：

这是因为Flash收到了附加的‘meta data’（元数据）可是我们还没有处理设施 。所以我们需要做一个元数据对象：

var video:Video = new Video&#40;320, 240&#41;;
&#160;
addChild&#40;video&#41;;
&#160;
var nc:NetConnection = new NetConnection&#40;&#41;;
&#160;
nc.connect&#40;null&#41;;
&#160;
var ns:NetStream = new NetStream&#40;nc&#41;;
&#160;
var meta:Object = new Object&#40;&#41;;
&#160;
meta.onMetaData = function&#40;meta:Object&#41;
&#123;
   //收到元数据的时候。。。
&#160;
   trace&#40;meta.duration&#41;;
   //印刷录像的持续时间
&#125;
&#160;
ns.client = meta;
//告诉netstream对象那个对象要处理元数据
&#160;
video.attachNetStream&#40;ns&#41;;
&#160;
ns.play&#40;&#34;snooker.flv&#34;&#41;;

再试一遍，录像播出而且持续时间被印刷了。那现在我们还要侦查状态调整的事件，为了有助于相互作用：

var [...]]]></description>
		<link>http://www.dazsnow.com/actionscript/actionscript3-video-basics/</link>
			</item>
	<item>
		<title>AS3 逼真的云效果</title>
		<description><![CDATA[我上星期四给气象局来的客人看一个培训演示。我老板让我去准备一个PPT，但是（显然的）我选了用Flash（既可以卖弄又不用学用微软的狗屎）。
我先做了背景，当演示进步时，颜色从白天的天蓝色逐渐地变到夜间的紫黑色。然后在那个上面做了一连串任意动画的云，都是被ActionScript3创造了（任意的模糊形状在各框里动）。最后我用了些很帅的动画为了呈现信息。
我觉得我应该把这个演示文件上载到我博客给你们看我怎么做逼真的云了。另外的东西都很乱因为我星期三晚上太紧了，所以我这个送给你们的文件里面只包括了第一些‘幻灯片’。
击间隔棒为了进步演示！
云代码：

import flash.display.*;
import flash.geom.Point;
import flash.events.Event;
&#160;
var bitmap:BitmapData;
var angle:Number = 0;
var _offset:Number = 0;
var randomness:Number = &#40;Math.random&#40;&#41;*1000&#41;+1000;
&#160;
var pt:Point = new Point&#40;10, 10&#41;;
bitmap = new BitmapData&#40;stage.stageWidth,310,true,0x000000&#41;;
var image:Bitmap = new Bitmap&#40;bitmap&#41;;
addChild&#40;image&#41;;
addEventListener&#40;Event.ENTER_FRAME,loop&#41;;
&#160;
function loop&#40;e:Event&#41;:void
&#123;
	var point:Point=new Point&#40;this._offset,0&#41;;
	bitmap.perlinNoise&#40;300,100,3,randomness,false,true,BitmapDataChannel.ALPHA,true,&#91;point,point&#93;&#41;;
	_offset+=2;
&#125;



presentation.zip(12.1MB)]]></description>
		<link>http://www.dazsnow.com/actionscript/realistic-cloud-effect-in-as3/</link>
			</item>
	<item>
		<title>新的拍摄宣传照</title>
		<description><![CDATA[我刚才到flickr上载了我最近拍的拍摄宣传照。有些比较俗气的，有的还好看。我过分地化妆了吧。我希望明年的日历里面，我的照片比我这年的更帅 :p
http://www.flickr.com/photos/dazsnow/sets/72157618164177771/]]></description>
		<link>http://www.dazsnow.com/random/new-publicity-photos/</link>
			</item>
	<item>
		<title>Flash和浏览器航行互动</title>
		<description><![CDATA[你想用浏览器的按钮后退，前进，和停止操纵你的flash吗？看看这个演示然后继续看这儿。。。

这个是flash的缺点之一，它于浏览器的航行方法不一致的。比如，用户击后退按钮期望回去前看的部分，可是前的网页会在下载一遍。然后用户得回到那个flash的网页，再找刚才看的地方。而且在flash航行的时候，地址栏内容都不变对吧。这样会荧惑人。总是不好设计。
我准备了一个很简单的flash movie。你自己试试看吧，看第一页，第二页等等， 然后试用浏览器的按钮。

查看fla文件（这里下载）你就可以把体系了解一下。各‘页’或部分都有一层，各按钮激活那一层的能见度:

//使第二，第三，和第四页看不见的东西
//每一层的内容就是一个movieclip，例子叫做diyiye, dierye, disanye,和disiye
dierye.visible = false;
disanye.visible = false;
disiye.visible = false;
&#160;
//current = 目前的， 所以这里我们要记得哪层现在是能看到的
var currrentClip:MovieClip = diyiye;
&#160;
//到按钮加event(事件）listener(发现功能）
//按钮都在菜单上面，都不能看到的
anniu1.addEventListener&#40;MouseEvent.CLICK, diyiyeClick&#41;;
anniu2.addEventListener&#40;MouseEvent.CLICK, dieryeClick&#41;;
anniu3.addEventListener&#40;MouseEvent.CLICK, disanyeClick&#41;;
anniu4.addEventListener&#40;MouseEvent.CLICK, disiyeClick&#41;;
&#160;
//你击第一个按钮什么会发生呢？
function diyiyeClick&#40;e:Event&#41;:void
&#123;
//只要第一页不是目前的时才能换页
if&#40;currrentClip != diyiye&#41;
&#123;
//使目前的不能看到的
currrentClip.visible = false;
//使第一能看到的
diyiye.visible = true;
//记得目前能看到的页
currrentClip = diyiye;
&#125;
&#125;
&#160;
function dieryeClick&#40;e:Event&#41;:void
&#123;
if&#40;currrentClip != dierye&#41;
&#123;
currrentClip.visible = false;
dierye.visible = true;
currrentClip = dierye;
&#125;
&#125;
&#160;
function disanyeClick&#40;e:Event&#41;:void
&#123;
if&#40;currrentClip != disanye&#41;
&#123;
currrentClip.visible = false;
disanye.visible = true;
currrentClip = disanye;
&#125;
&#125;
&#160;
function disiyeClick&#40;e:Event&#41;:void
&#123;
if&#40;currrentClip != disiye&#41;
&#123;
currrentClip.visible = false;
disiye.visible = true;
currrentClip [...]]]></description>
		<link>http://www.dazsnow.com/flash/deep-linking-swfaddress/</link>
			</item>
	<item>
		<title>反馈&#038;营销</title>
		<description><![CDATA[我花了5个月写这个博客，我会很感激你们的反馈。
到现在我受到的反馈都是我的内容太专业的，并我的汉语还比较差。
我的回答是：1）应该很专业的因为它针对Flash/Actionscript学生 2）帮我！！！！如果你注意到错误请留个评论，纠正或者告诉我怎么优美地说。我保证认真地学习！
我打算简化我的内容，把重点集中在更好玩的东西，比如3D动画和有用的应用程序。
我还在考虑更新我的主题设计。5个月可能太早吧？可是我已经对它腻烦的，我觉得我可以简化点。。。 上面的菜单可能没有用或者烦的？我还会改善设计，使它更整齐，更容易找有意思的信息，也更快点（为你们的处理机没有这么激烈的！）。再说一次，我很期待你们的反馈。
一个问题是我不知道怎么宣扬。我对中国的网络营销不太熟悉，我只在一些中国Flash论坛或网站贴了广告但是我恐怕会看起来垃圾邮件。百度跟google不一样；google的搜索结果是根据相关和价值，而百度的搜索结果好像是根据被网站‘捐献’给百度的钱。我当然不想支持这样的系统，可是我还想帮中国人更容易找到我的博客。有主意么？
最后，我觉得我以前猜的每个星期两个辅导课太不切实际的。各课需要几个小时准备所以我从现在试试每个星期出一个。请原谅我缺准时。
谢谢。]]></description>
		<link>http://www.dazsnow.com/random/feedback-and-marketing%e5%8f%8d%e9%a6%88%e8%90%a5%e9%94%80/</link>
			</item>
	<item>
		<title>任意的运动</title>
		<description><![CDATA[我今天想演示如何做任意的运动。没什么有用的目的，但是还比较美观的也可能会搞活你工程的背景。基本上，我在舞台上做了一个简单的背景还有一个简单‘球’movieclip在收藏里。 我为actionscript输出那个movieclip，给它‘Ball’的类名。

所以我还需要创造一个ActionScript文件叫‘Ball.as’，然后把它存放在一样的夹子里。我们以后再写这个吧。先看这个Flash（swf）的文件。在行动层（actions layer）上，我写了这块代码 － 还比较简单，就看我的写照该能明白：

for&#40;i=0;i&#38;lt;60;i++&#41; &#123;
	//重做60遍
	var t:Ball = new Ball&#40;&#41;;
	//创造ball（球）类的一个例子
	t.x = Math.random&#40;&#41;*this.width;
	t.y = Math.random&#40;&#41;*this.height;
	//把球放在舞台(this)上任意的(random)位置
	t.setDX&#40;Math.round&#40;Math.random&#40;&#41;*this.width&#41;&#41;;
	t.setDY&#40;Math.round&#40;Math.random&#40;&#41;*this.height&#41;&#41;;
	//告诉球下次（下一个框）到哪儿去，还是舞台上的任意的位置
	t.scaleX = Math.random&#40;&#41;*3;
	t.scaleY = t.scaleX;
	//任意改球的大小（scale = 规模）
	t.addEventListener&#40;Event.ENTER_FRAME, mover&#41;;
	//使球在每一框里召唤‘mover’（动作）功能
	addChild&#40;t&#41;;
	//把球加到显示表 ，然后在舞台上就能看出来它
&#125;
&#160;
function mover&#40;e:Event&#41; &#123;
	//动作功能
	var t = e.currentTarget;
	//发现是哪个Ball类的一个例子召唤了这个功能
	t.x += &#40;t.getDX&#40;&#41;-t.x&#41;/3;
	t.y += &#40;t.getDY&#40;&#41;-t.y&#41;/3;
	//把球到它的目的地动一下；3表示速度 － 越高越慢，因为距离是各框里被除
	if&#40;Math.round&#40;t.x&#41; == t.getDX&#40;&#41;&#41; &#123;
	//如果到了目的地。。。
		t.setDX&#40;Math.round&#40;Math.random&#40;&#41;*this.width&#41;&#41;;
		t.setDY&#40;Math.round&#40;Math.random&#40;&#41;*this.height&#41;&#41;;
		//找新的目的地
	&#125;
&#125;

现在写那个ActionScript文件：


package
&#123;
	import flash.display.MovieClip;
&#160;
	public class Ball extends MovieClip
	&#123;
		//目的地位置变量
		private var dx:Number;
		private var dy:Number;
&#160;
		public function Ball&#40;&#41;
		&#123;
			//这个构成机构函数什么东西都不用
		&#125;
&#160;
		//回目的地变量的功能
		public function getDX&#40;&#41;:Number
		&#123;
			return dx;
		&#125;
&#160;
		public function getDY&#40;&#41;:Number
		&#123;
			return dy;
		&#125;
&#160;
		//设定目的地变量的功能
		public function setDX&#40;n:Number&#41;:void
		&#123;
			dx [...]]]></description>
		<link>http://www.dazsnow.com/actionscript/random-motion/</link>
			</item>
	<item>
		<title>自动地安装延伸部分</title>
		<description><![CDATA[你可能注意到了我各工程安装我的flash movie安装得一样。我创造新的flash movie的时候，我先做这些措施：

框率 = 30
定宽度和高度（平时600&#215;400缺省）
在时间线上做一个‘行动’(actions）层然后锁
收藏里创造4个夹子：图片，录像，音像，&#38; movieclips

那为了加快这个程序我用我自己做的扩建部分板，它自动地安装所有的参量。这样就是我自己的方式但我觉得还不错。如果你想要学我未来的例子，我要假定你的flash工程是差不多这么被安装的。
设置方法：只下载然后双击这个包装文件。然后在Flash里面从顶部的菜单选：窗户 》其他的板 》Setup。玩得开心啊！


MovieSetup.mxp(92KB)]]></description>
		<link>http://www.dazsnow.com/extensions/automatic-movie-setup-extension/</link>
			</item>
	<item>
		<title>对filters有兴趣</title>
		<description><![CDATA[在这个辅导课我摆弄高级filter效果，使我们的动画特别酷。我先用一个图片，它在舞台随机地行进。我在使用‘Tweener’的收藏；网上有好多这样的收藏，这一个比较出名的。我把它报考在辅导课文件里面，你要主意收藏的‘caurina&#8217;夹子也在你的flash工程的夹子里。


import caurina.transitions.*;
var lbss:LBSS = new LBSS&#40;&#41;;
addChild&#40;lbss&#41;;
function mover&#40;&#41;:void
&#123;
Tweener.addTween&#40;lbss, &#123;x:Math.random&#40;&#41;*550,
y:Math.random&#40;&#41;*400,
rotation:Math.random&#40;&#41;*400,
time:1,
onComplete:mover&#125;&#41;;
&#125;
mover&#40;&#41;;

收藏里有个movieclip叫‘LBSS’所以我代码里创造一个instance然后加到显示单上(addChild功能)。下一步，mover功能表现动作，把图片随机，如你所见到的。主意我收藏里的movieclip是被输出的为actionscript：
为了得到非常酷的效果，我们需要使用BitmapData (Bitmap = 位图，data = 数据)。这样我们可以持续不断地到那个BitmapData的对象里面画像素，然后应用一个filter。最好你先去这儿学习BitmapData。
那我们创造个BitmapData对象，把那个为一个Bitmap对象应用，最后加到显示单上：

var bmd:BitmapData = new BitmapData&#40;550, 400, true, 0x000000&#41;;
//录像宽度，录像高度，用不用透明(true 是，还是 false 否)，透明的像素颜色
var bm:Bitmap = new Bitmap&#40;bmd&#41;;
addChild&#40;bm&#41;;

那个BitmapData对象还没有什么数据里面所以我们要告诉它怎么画那个图片的像素。但是，我们不要每次只画图片，我们需要持续不断地画全舞台，你一后可看到为啥。顺便提一句，你可能注意到了我们的BitmapData对象是跟舞台一样的大小。tweener代码后，创造个Enter_Frame(新框)功能吧；里面我们可以拍舞台的一张快照然后把它为BitmapData丢想里面画：

import caurina.transitions.*;
var bmd:BitmapData = new BitmapData&#40;550, 400, true, 0x000000&#41;;
//录像宽度，录像高度，用不用透明(true 是，还是 false 否)，透明的像素颜色
var bm:Bitmap = new Bitmap&#40;bmd&#41;;
addChild&#40;bm&#41;;
var lbss:LBSS = new LBSS&#40;&#41;;
addChild&#40;lbss&#41;;
function mover&#40;&#41;:void
&#123;
Tweener.addTween&#40;lbss, &#123;x:Math.random&#40;&#41;*550,
y:Math.random&#40;&#41;*400,
rotation:Math.random&#40;&#41;*400,
time:1,
onComplete:mover&#125;&#41;;
&#125;
mover&#40;&#41;;
addEventListener&#40;Event.ENTER_FRAME, loop&#41;;
function loop&#40;e:Event&#41;:void
&#123;
bmd.draw&#40;this&#41;;
&#125;

如果你现在试试的话，你要看到各框里舞台（this)被BitmapData（bmd)持续不断地画了，也躺在前画的图上面。这每次只是单个Bitmap图片，就是每次像素内容都改变了。现在我们到位图数据加一些filters吧。创造Bitmap对象的地方下面，创造个blur filter (模糊的)，这样：

var bf:BlurFilter = new [...]]]></description>
		<link>http://www.dazsnow.com/flash/fun-with-filters/</link>
			</item>
	<item>
		<title>Flash 波形显示</title>
		<description><![CDATA[大概18个月之前，我的好朋友陶艺夫问我会不会用Flash播放个录音然后在屏幕上的表示动画的声谱，像一个音响一样。我记得我告诉过他这很复杂，还需要第三方的插入软件。
嗯，现在我终于知道一个很简单的答案。咱们今天要做一个基本的为声音所迫的动画。我给你介绍一下‘computeSpectrum’的功能。下个辅导课里我还要教你怎么用Filters（）为了把动画变美。像往常一样，从这个文章下面你可以下载所有的文件。
第一，创造个新的Flash文件。我每次先设定大小，背景颜色，还有帧速（至少30）。然后创造个新层叫‘actions’（“行动”），为写代码，把它锁。这次，我的背景是黑色，大小是512&#215;300象素，帧速是40。把文件存到你想用的录音文件一样的地方。
我的录音是一个mp3，我唱一首KTV的典范歌：菊花台。哦叶。。。‘actions’层的第一帧里面，先播放录音：

var s:Sound = new Sound&#40;new URLRequest&#40;&#34;juhuatai.mp3&#34;&#41;&#41;;
s.play&#40;0, 1000&#41;;

咱们这么创造个新的Sound（声音）对象，用着录音文件在这个夹子里一块。然后播放1000遍。现在试验一下你的Flash movie，你应该听得见录音吧。
很容易得到波形数据，但是我们需要把那部分代码放在个onEnterFrame的事件；这样进入各帧的时候，那块代码会被执行（帧速40的话，那就每秒钟40次）。要不然，我们只能看到一个快照看第一个1/40秒钟的波形。所以我们要用一个Event Listener（事件检波器）：

addEventListener&#40;Event.ENTER_FRAME, loop&#41;;

这一行把个事件检波器放在舞台上（以前用AS2时，舞台就是&#8221;_root&#8221;)。它等‘ENTER_FRAME’的事件，再说每秒钟40次，然后每次要叫一个功能‘loop’（重做）。
下面写这个功能吧：

function loop&#40;e:Event&#41;:void
&#123;
     //某事
&#125;

所有的被事件检波器叫的功能都必须有一种Event（事件）的参项，也就是 e:Event （请看看我的‘自动地产生事件代码的延伸部分’查一下别的例子代码）。‘void’的意思是这个功能不会返回信息；不是必须的，但还是好主意因为如果你和别人分享你的工程那他们可以容易地看懂这个功能是为了得到信息或者执行行动。
咱们创造那个loop功能以前，咱还有一件事。咱们需要把录音的数据放在一个‘ByteArray’对象里面。这就是一排字节，所以当各帧声音数据进来时咱加一字一字的数据。为处理二进码的数据(0与1)，用ByteArray是个好办法。那在‘addEventListener’以上加这一行：

var ba:ByteArray = new ByteArray&#40;&#41;;

‘ba’是一个公有的变量，全文件都能用（比如说，如果这一行是在个功能里面那只有那个功能里面的代码能用）。咱们现在可以写那个loop功能：

function loop&#40;e:Event&#41;:void
&#123;
     SoundMixer.computeSpectrum&#40;ba&#41;;
&#125;

computeSpectrum功能只要一个参量，那个我们刚才创造的ByteArray。现在这个功能各帧里被执行，然后给ByteArray满上波形的数据。其实数据是‘float’数，－1 到 1。每一数是512块声音数据之一：左声道的256块，右声道的256块（你记得我们的movie是宽512px吗? :p）。我的录音只有一个声道所以第一个256块是跟第二个256块一样吧。所以我只要查看第一个256块然后就得到了完全信息。我们要一个for loop:

for&#40;var i:uint=0; i&#38;lt;256; i++&#41;
&#123;
&#125;

‘unit’代表‘unsigned integer’ （无符号整数），在for loop里面很好用因为它又小又快。看这第一个256数（左声道），我们用那个graphics类为了做简单的一个动画。AS3新的画画API让所有的对象有一个‘graphics’特点。所以我们可以容易地处理舞台的这个特点为了画画。在我们的loop功能里面，在for loop上面，咱们先要转晴前画的东西。要不然下个帧回来加上新的画。转晴了以后，咱要设定画线画的样式，两个必须的参量就是厚度和颜色。我们说1px白色好吧？好简单呀。

function loop&#40;e:Event&#41;:void
&#123;
     graphics.clear&#40;&#41;;
     graphics.lineStyle&#40;1, 0xFFFFFF&#41;;
     [...]]]></description>
		<link>http://www.dazsnow.com/flash/flash-sound-waveform-display/</link>
			</item>
	<item>
		<title>一些有用的中文Flash网站</title>
		<description><![CDATA[仅一个短的，关于我最近见到的一些中国Flash网站。我开始这个博客之前，就以为网络有很少这样中国Flash社区的网站了。虽然猜得不对，还是非常不好找。但却这些网站真证明一个很才能的和积极的社区。
如果你还有建议，请通知我。我也想看做工精良的中国Flash网站，因为我很少见到所以就好奇了。
中文AS3语言与部件参考手册
http://www.airia.cn/ActionScript3API/livedocs/

Wonderfl ： 绝妙的一个主意 － 把代码和别人分享或改装，者的是为学习最好的办法。实际地能在网页中执行flash movies，在代码旁边！
http://wonderfl.kayac.com/codes?page=1
例子:
http://wonderfl.kayac.com/code/685d3095aabe1ca4621b6b336454fb6808152017
http://wonderfl.kayac.com/code/15d2e8f39dd7ce4b6b3452fbf86b44b3b3761484
中文Flash例子 : 如果你认真地要用AS3，你肯定要学Flex。这个网站也有不少好使用的提示。
http://blog.minidx.com/
RiS社群 : 可能是中国最好的Flash资源，并你这里可以建立良好的关系。
http://forum.j2eemx.com/
圣叹 : 圣叹 : 一个很清楚的博客，一个很聪敏的的developer
http://www.moorwind.com/index.php
小小菜鸟的web菜园子 : 小小菜鸟的web菜园子 : 比较深入的，还是挺有意思。
http://xxcainiao.cnblogs.com/
HuoShan : 太好了看到个用Flash的Flash博客，但虽然我喜欢它的个人的感觉（特别是它自豪地表现些很中国的设计分子），不太好用我觉得。它是有几个好使用的文章，而且看起来它跟上Flash最新发展，所以很值的你去倾听一下。
http://www.huoshan.org/
专注于Flash RIA与网络游戏开发 : 好使用的提示。
http://www.sujun.org/
RIA教程网 : RIA教程网 : 那么多好玩的东西，也有用看看别人在Flash社区中在做什么，他们的时尚，新技术，什么的。
http://www.freesitesource.com/
Super Flex : 很高级的译成电码，博客还设计得非常好，很提神的。
http://gain-loss.org/]]></description>
		<link>http://www.dazsnow.com/other-sites/some-useful-chinese-flash-sites%e4%b8%80%e4%ba%9b%e6%9c%89%e7%94%a8%e7%9a%84%e4%b8%ad%e6%96%87flash%e7%bd%91%e7%ab%99/</link>
			</item>
</channel>
</rss>
