[AS功能代码教程12] 填色游戏

在本次课程中我们将学习使用Color类来制作一个填色游戏

并通过本实例复习for...in及SharedObject的应用

思路:

1.使用脚本代码创建一个调色盘,鼠标点击色块后进行取色;

2.绘制作为填充的影片剪辑并把每一部都存为影片剪辑。例如: 填充对象是一个人物,那么要把他的头发,眼睛,脸等部分都保存成影片剪辑;

3.最后把各部分影片再统一保存到一个影片剪辑(mc)中;

4.为了保存和读取mc中各影片中的颜色,所以要加入两个按钮 save_btn 和 load_btn 。

步骤1:

绘制作为填充的影片剪辑并把每一部都存为影片剪辑;

最后把各部分影片统一保存到一个影片剪辑中,实例名mc;

绘制两个按钮实例名分别为 save_btn 和 load_btn 。

步骤2:

加入AS代码

//===== 绘制一个正方形作为色块以备调用=====
_root.createEmptyMovieClip("box", -1);
var box_size:Number = 12;
var TheCol = 0x0;
//用于存储所取的色彩值
with (box) {
 beginFill(TheCol);
 moveTo(0, 0);
 lineTo(box_size, 0);
 lineTo(box_size, box_size);
 lineTo(0, box_size);
 lineTo(0, 0);
 endFill();
}
box._visible = false;
//============================================
//************* 下面生成一个调色盘 *************
var panex:Number = 3;
var paney:Number = 3;
var column:Number = 18;
//起点 x 坐标为 3, 起点 y 坐标为 3, 总行数为 18
var i = 0;
for (var r = 0; r<=0xFF; r += 0x33) {
 for (var g = 0; g<=0xFF; g += 0x33) {
  for (var b = 0; b<=0xFF; b += 0x33) {
   var p:MovieClip = box.duplicateMovieClip("box"+i, i);
   new Color(p).setRGB(r*256*256+g*256+b);
    //new Color(p).setRGB(r << 16 | g << 8 | b);
    //RGB转换公式,以上两种都可以使用
   p._x = panex + Math.floor(i/column)*(box_size+1);
   p._y = paney + i%column*(box_size+1);
 //设置每个色块的坐标 行坐标: [i/column], 列坐标: i%column
   p.onRelease = function() {
    TheCol = new Color(this).getRGB();
    new Color(curser.BG).setRGB(TheCol);
   //点击到该色块后进行取色于保存到TheCol变量中
   };
   i++;
  }
 }
}
//******************************************
//===== 判断点击到图案上以后对哪个影片剪辑填色 =====
mc.onRelease = function() {
 var flag:Boolean = true;
 //增加一个flag为了避免一次对多个影片进行填色
 for (var k in mc) {
  if (mc[k].hitTest(_xmouse, _ymouse, true) && flag) {
   new Color(mc[k]).setRGB(TheCol);
   flag = false;
  }
 }
};
//============================================
//************* 对mc中所有填充色的读取和保存 *************
save_btn.onRelease = function() {
 var so:SharedObject = SharedObject.getLocal("Color_save");
 for (var k in mc) {
  so.data[k] = new Color(mc[k]).getRGB();
 }
};
load_btn.onRelease = function() {
 var so:SharedObject = SharedObject.getLocal("Color_save");
 for (var k in mc) {
  new Color(mc[k]).setRGB(so.data[k]);
 }
};
//******************************************

Flash充电: 例举 Color类中常用方法简介

请注意: 我们在舞台中所绘制出的影片剪辑即使给他是填充了纯色影片,使用getRGB()也不会取得其RGB值。我们只有对其使用过setColor()后,才能用getRGB()获取该影片的颜色值。

例1: 为影片剪辑 mc 创建一个名为 m_Col的 Color 对象,并将其RGB值设置为橙色:

var my_color:Color = new Color(my_mc);
my_color.setRGB(0xff9933);

例2: 获取影片剪辑 mc的RGB值并以16进制显示出来:

var m_Col:Color = new Color(mc);
m_Col.setRGB(0xff9933);
var myValue:String = m_Col.getRGB().toString(16);

时间: 2025-01-20 07:44:00

[AS功能代码教程12] 填色游戏的相关文章

flash 填色游戏

9.[AS 功能代码教程12] 填色游戏 在本次课程中我们将学习使用 Color 类来制作一个填色游戏 并通过本实例复习 for...in 及 SharedObject 的应用 思路: 1.使用脚本代码创建一个调色盘,鼠标点击色块后进行取色; 2.绘制作为填充的影片剪辑并把每一部都存为影片剪辑.例如: 填充对象是一个人物,那么要把他的头发,眼睛,脸等部分都保存成影片剪辑; 3.最后把各部分影片再统一保存到一个影片剪辑(mc)中; 4.为了保存和读取mc中各影片中的颜色,所以要加入两个按钮 sav

fl 填色游戏

9.[AS 功能代码教程12] 填色游戏 [FL基础理论大师] 在本次课程中我们将学习使用 Color 类来制作一个填色游戏 并通过本实例复习 for...in 及 SharedObject 的应用 思路: 1.使用脚本代码创建一个调色盘,鼠标点击色块后进行取色; 2.绘制作为填充的影片剪辑并把每一部都存为影片剪辑.例如: 填充对象是一个人物,那么要把他的头发,眼睛,脸等部分都保存成影片剪辑; 3.最后把各部分影片再统一保存到一个影片剪辑(mc)中; 4.为了保存和读取mc中各影片中的颜色,所以

Flash8技巧:用BitmapData.floodFill做填色游戏

技巧 在flash8之前的填色游戏一般是将要填色的物件分成若干个小的MovieClip,然后单独对其填充颜色. 利用BitmapData.floodFill对位图对象填充颜色的特性来实现区域填色,似乎比较方便,只要将线稿导入到flash中,变成BitmapData就可以填色了.下面是一个实例     效果演示 点击这里下载源文件 import flash.display.BitmapData;   var colorNumber:Number=15; //色块数量 var nowColor:Nu

[AS功能代码教程08] Bitmap动态效果

一.计算机中显示的图形一般可以分为两大类--矢量图和位图. 矢量图(vector):使用直线和曲线来描述图形,这些图形的元素是一些点.线.矩形.多边形.圆和弧线等等,它们都是通过数学公式计算获得的.众所周知Flash就是一款矢量动画制作软件.在AS中使用的填色(beginFill),画线(lineTo)等命令都是基于对矢量图的操作. 位图(Bitmap):一般是用于照片品质的图像处理,是由许多像小方块一样的像素组成的图形.简单地说,位图就是以无数的色彩点组成的图案.位图(Bitmap)也就是我们

不到40行代码的填色游戏

今天一个朋友问我怎么做花纹填充上色,就花点时间给他做了一个.思路是利用beginBitmapFill画矩形,然后用待填充的图形做mask.舞台上有两个mc,一个是colors,一个是canvas,另外还有一个描边图形colors负责选色,canvas里面是多个分离的图形,也就是待填充mc(无需取名) 看一下代码://先是定义一个画矩形函数 import flash.display.BitmapData; import flash.geom.*; function createRectangle(

[AS功能代码教程04] 进阶三角函数

在AS 03教程中,我们介绍了关于三角函数基础应用 现在为上次课的内容加以补充和发展 复习一下画圆的方法:x坐标cos(n),y坐标sin(n); n 从0-360的弧度 一.绘制椭圆 对比一下,我们只是把画圆方法中 R ,一分为二. 分成了 W 和 H 分别控制椭圆的宽和高. _root.createEmptyMovieClip("MC", 1); MC._x = 200; MC._y = 200; //创建一个空影片剪辑,放在舞台中央作为画线容器 var W = 50; var H

[AS功能代码教程02] 数字魔方及数组

数字魔方(经典数据结构实例): 1.本游戏的玩法,均在本FLASH中一一介绍了,博客中不再重复: 下载地址: http://www.flashempire.com/myfe/upload/flash/142/1410014_1195878655.swf 2.编程序的基本原则就是这个游戏玩法的原则即: 1)第一行中间是1: 2)向右1格:向上1格; 3)上边出界,去下边; 4)右边出界,去左边; 5) 没数占着,就填数; 6)有数占着,坐屁股下. 3.下面是矩阵计算的程序: var n:Numbe

[AS功能代码教程01] 通用延迟代码

使用方法: 将下列代码写入fla的第一帧:在任意帧中写入delay();命令就可以实现3秒钟延时功效: 思路: 1.使用FPS和onEnterFrame配合完成. 2.Flash动画默认1秒钟播放12帧,即FPS为12. 3.执行一次onEnterFrame(进入帧),counter++自加1,那么一秒钟要加多少次呢?1秒钟要进入12次帧,所以自加了12次.那么2秒钟,3秒钟呢-于是我们得出公式 总延迟时间 = 延迟秒数 * FPS 原理就是用帧数做延时. AS代码: var fps:Numbe

AS功能代码教程:鱼眼放大镜

下面我们先用图解法来解释一下本实例 思路: 1.鱼眼放大镜是于若干个渐小的圆组成的: 2.使每个圆都去遮罩一个渐大的图片来实现,里面的小圆遮罩大较图片,外面的大圆遮罩较小图片: 3.还有最后一个重要的步骤是"对焦",由于图片是渐大的,所以鼠标所在的一个点位对于小图来说也许是头部,而对于大图来说也许都到了场外,那么显示出的效果就错了.使用"对焦"可以让鼠标指在小图上是头部,大图上也要是头部,这么说给大家一个印象,下面请看图解.   1.首先在舞台上放入两个影片剪辑,其