其中 冰心凉凉 最后的提义是判定图片像素的颜色值,改变雪花状态.现在有了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();
好了,到此结束.源文件: 点击浏览该文件发布的时候请参考:
欢迎指出不足和错误.