论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

利用FP8新功能getPixel做雪花(二)

文章类别:Flash | 发表日期:2008-9-21 20:07:55

  其中 冰心凉凉 最后的提义是判定图片像素的颜色值,改变雪花状态.
现在有了FP8提供了新功能,可以实现这一想法了.
效果如下:
点击浏览该文件
点击浏览该文件

假如无法观看,请安装FLASH PLAYER 8.0 BETA
所以这篇文章是为了完成上面的教程.
我主要介绍一下重点的地方,其他地方可以参考上面的教程里面的注示,谢谢支持.
教程中用到了高手的一个方法,在这里借用一下.
用上面的教程,把雪花的影片剪辑放到舞台上,命名为snow_mc,并加入如下代码:
onClipEvent (load) {
this.moving = true;

//调用主轴上的获得颜色方法
preColor = _parent.getMouseColor(this);
}
onClipEvent (enterFrame) {
if (this.moving) {
r = random(5);
s = random(2);
this._y += 2;
if (s == 0) {
this._x += 1;
} else if (s == 1) {
this._x -= 1;
}
if (this._y>385|| this._x<0) {
this._y = 10;
this._x = random(520);

//当雪花超出范围时初始化此时颜色值
preColor = _parent.getMouseColor(this);
}
this._rotation = random(20);

//比较颜色差值,若差值大过自定义的范围,停止下落,并再新生成一个雪花,并调用雪花的消失方法
if (Math.abs(_parent.getMouseColor(this)-preColor)>2000000) {
stopOrNot = random(3);
if (stopOrNot == 1) {
this.moving = false;
_parent.createSnow();
_parent.createCount(this);
}
} else {

//差值较小,更新得到的背景颜色值
preColor = _parent.getMouseColor(this);
}
}
}
以上是雪花的代码.
现在在主场景上加入背景:
选一个比较合适的背景图片,引入到FLASH中,按F8转为影片,命名为:bg_mc
如下图:
按此在新窗口浏览图片
按此在新窗口浏览图片
在主轴上加入代码,下面是影片主轴的代码:
stop();

//初始生成20个雪花,可以自定义数量
for (i=1; i<20; i++) {
snow_mc.duplicateMovieClip("snow"+i+"_mc", i);
eval("snow"+i+"_mc")._x = random(520)+10;
eval("snow"+i+"_mc")._y = random(390)+20;
}
_global.i = 30;

//雪花生成 方法
function createSnow() {
_global.i++;
var i = _global.i;
snow_mc.duplicateMovieClip("snow"+i+"_mc", i);
eval("snow"+i+"_mc")._alpha = 100;
eval("snow"+i+"_mc")._xscale = random(50)+50;
eval("snow"+i+"_mc")._yscale = eval("snow"+i+"_mc")._xscale;
eval("snow"+i+"_mc")._x = random(520)+10;
eval("snow"+i+"_mc")._y = random(390)+20;
eval("snow"+i+"_mc").i = i;
}

//雪花计数 方法,每一秒会调用dis方法进行计数
function createCount(mc:MovieClip) {
mc.count = 0;
mc.interval = setInterval(dis, 1000, mc);
}

//计数 方法,若计数到60会调用undisplay方法
function dis(mc:MovieClip) {
mc.count++;
if (mc.count == 60) {
clearInterval(mc.interval);
delete mc.interval;
undisplay(mc);
}
}

//删除雪花 方法,删除计数超时的雪花,节省资源
function undisplay(my_mc:MovieClip) {
my_mc.createEmptyMovieClip("tmp_mc", my_mc.getNextHighestDepth());
my_mc.tmp_mc.onEnterFrame = function() {
my_mc._alpha -= 10;
if (my_mc._alpha<=0) {
delete my_mc.tmp_mc.onEnterFrame;
my_mc.removeMovieClip();
}
};
}
// --------------------------------------------

//创建位图

var img_bmp = new flash.display.BitmapData(520, 390, true);

//装载要处理的背景图片
_level0.img_bmp.draw(_level0.bg_mc);

//影片所在位置的背景颜色值获取方法
function getMouseColor(mc:MovieClip) {
var xx = mc._x;
var yy = mc._y;

//调用系统方法getPixel,获取颜色值,并返回值

return img_bmp.getPixel(xx, yy);


}
stop();
好了,到此结束.
源文件:
点击浏览该文件
发布的时候请参考:
flash mx2004 产生 flash 8 的swf经验教学
欢迎指出不足和错误.
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058