as 渐退方格效果

var Row:Number = 10;
var Colum:Number = 10;
// 10 行 10 列
var ci:uint = 5;
var cj:uint = 5;
// 点击到的数组位置 5,5
var a:Array = new Array();
for (var i:uint = 0; i < Row; i++) {
 a[i] = new Array();
 for (var j:uint = 0; j < Colum; j++) {
  a[i][j] = Math.abs(i-ci) > Math.abs(j-cj) ? Math.abs(i-ci) : Math.abs(j-cj);
 }
}

for (i = 0; i < Row; i++) {
 trace(a[i]);
}

输出结果如下:
5,5,5,5,5,5,5,5,5,5
5,4,4,4,4,4,4,4,4,4
5,4,3,3,3,3,3,3,3,4
5,4,3,2,2,2,2,2,3,4
5,4,3,2,1,1,1,2,3,4
5,4,3,2,1,0,1,2,3,4
5,4,3,2,1,1,1,2,3,4
5,4,3,2,2,2,2,2,3,4
5,4,3,3,3,3,3,3,3,4
5,4,4,4,4,4,4,4,4,4

测试一下。核心语句,就这一句,OK,搞定,呼呼
a[i][j] = Math.abs(i-ci) > Math.abs(j-cj) ? Math.abs(i-ci) : Math.abs(j-cj);
这句话可以理解为,当前数组小格的行和列(i 和 j)与点击到的方格的 i 和 j 相比较,找出这两个比较后哪个绝对值最大,就用这个绝对值最大的数填入当前的数组元素中。OK,写到这里,这个程序的难点就介绍完了。骨架有了,下面开始填肉。既然已经进入了 AS 3 时代,就不能想 AS 2 时候那么奔放了,不能够动态地加入属性或方法了。因为我们的类是密封类,无法在运行时添加其他属性和方法。密封类对象实例没有内部哈希表,从而提高内存使用效率和访问性能。所以说事物都是有两面性的,好处是提高了效率,那么缺点就是我们要多敲些代码了。解决办法就是创建自定义的类。

看过前面 Making Things Move 的朋友们应该很熟悉了吧。好了,不多说了,看这个 Box 类:
package {
 import flash.display.Sprite;
 public class Box extends Sprite {
  public var BufTime:Number = 0;
  public var ci:uint = 0;
  public var cj:uint = 0;
  public var Count:Number = 0;
  public function Box(W:Number,H:Number) {
   graphics.beginFill(0x66CCFF)
   graphics.drawRect(0, 0, W, H)
   graphics.endFill();
  }
 }
}

首先它是 Sprite 的子类。那么说是子类大还是父类大?按照辈分来讲当然是父类大。呵呵,不过在 OOP 世界里就不一样了,一般来讲,子类都是大于父类的,因为子类继承了父类的一切,并且在父类的基础上发展出了更多的功能(属性和方法),所以从功能上讲,子类要比父类大。
我们给 Box 影片,自定义几个成员变量(类变量),分别是:BufTime(存储等待时间),ci(该小格位于数组中的 i 下标),cj(该小格位于数组中的 j 下标),Count(用于计数时间)。通过构造函数给出 Box 的大小,例如:Box(40,40)。将 Box 类保存起来(Box.as)。下面来看文档类 MainBox.as:
package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
 public class MainBox extends Sprite {
  // 方格的宽和高为 10 * 10
  var Box_w:Number = 10;
  var Box_h:Number = 10;
  // 根据舞台大小和方格大小,求出可以放入多少行,多少列个小方格
  var Colum:int = stage.stageWidth / Box_w;
  var Row:int = stage.stageHeight / Box_h;
  // boxAry 用于保存每个小方格的引用
  var boxAry:Array = new Array();
  
  public function MainBox() {
   init();
  }
  
  function init():void {
   for (var i = 0; i < Row; i++) {
    for (var j = 0; j < Colum; j++) {
     // 生成新的方格,保存每个的引用,码放好位置
     var box:Box = new Box(Box_w, Box_h);
     boxAry.push(box);
     addChild(box);
     box.x = j * (Box_w + 1);
     box.y = i * (Box_h + 1);
     // 保存方格对应数组中的行和列,并添加侦听
     box.ci = i;
     box.cj = j;
     box.addEventListener(MouseEvent.MOUSE_DOWN,MouseDown);
    }
   }
  }
  
  function MouseDown(evt:MouseEvent):void {
   // 根据点击的方格的数组下标,计算出二维数组
   var ci = evt.target.ci;
   var cj = evt.target.cj;
   var a:Array = new Array();
   for (var i:uint = 0; i < Row; i++) {
    a[i] = new Array();
    for (var j:uint = 0; j < Colum; j++) {
     a[i][j] = Math.abs(i-ci) > Math.abs(j-cj) ? Math.abs(i-ci) : Math.abs(j-cj);
    }
   }
   // 按照二维数组的顺序,为每个 box 设置等待时间
   var count:uint = 0;
   for (i = 0; i < Row; i++) {
    for (j = 0; j < Colum; j++) {
     var box:Box = boxAry[count] as Box;
     // 设置等待时间
     //  + Math.random() * 4 可让时间有些差异
     box.BufTime = a[i][j] + Math.random() * 4;
     count++;
    }
   }
   addEventListener(Event.ENTER_FRAME,EnterFrame);
  }
  
  function EnterFrame(evt:Event):void {
   // 每帧每个 box 的 Count 加一,大于延迟时间后删除 box。
   for (var i = boxAry.length-1; i >=0; i--) {
    var box:Box = boxAry[i] as Box;
    if (box.Count++ > box.BufTime) {
     removeChild(box);
     boxAry.splice(i,1);
    }
   }
  }
 }
}

时间: 2024-10-11 02:35:46

as 渐退方格效果的相关文章

Android实现游戏中的渐隐和渐现动画效果_Android

1实现渐隐的动画 在程序中实现可以通过如下方式 View view = new View(context);//执行动画的View AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f);//创建一个AlphaAnimation 对象,渐变从1->0 aa.setDuration(1500);//设置持续时间 aa.setFillAfter(true);//设置这个View最后的状态,由于是从1->0,所以最后的是消失状态(最后是看不到见这个Vie

目前国内视频版权价格高潮渐退,市场开始回归理性

摘要: 国资委直属的"视频网站国家队"华录坞昨天宣布,旗下的囊括上百部国产红色经典影片的"红色经典专区"正式上线.华录文化董事副总经理李笛当天在采访中透露,目前国内视频版 国资委直属的"视频网站国家队"华录坞昨天宣布,旗下的囊括上百部国产红色经典影片的"红色经典专区"正式上线.华录文化董事副总经理李笛当天在采访中透露,目前国内视频版权价格高潮渐退,市场开始回归理性. 李笛称,去年下半年开始,国内版权价格开始飞涨,今年年初版权价

奢侈品电商高烧渐退 优化供应链是关键

硅谷网讯 在风投冒险意愿逐年降低.对电商投资收紧的当下,国外时尚电商却 纷纷传来融资消息. 进入6月,法国时尚聚合类电商RAD.美国互联网男士正装品牌CombatGent.互联网美容品牌Julep.设计类电商Fab.com均宣布获得风投注资.就在前两天, 社会化电商Fancy和时尚闪购网站ideeli也先后斩获新一轮融资,值得一提的是,前者 整体估值达6亿美元. 相对而言,国内的时尚电商近期融资表现平平.这些早期集中在奢侈品领域发力的电商,鼎盛时期集中在2009年到2011年,这段时间里,国内迅

[VC6] 在对话框上实现LOGO图片的渐变性切换效果

一个比较简单的效果.在对话框上放几个单项选择,当用户改变选择时,在对话框上有一个LOGO性质的图片进行渐变性的切换,已反应当前的选择.实现的代码量很小.我从网络上下载了三个足球俱乐部LOGO的壁纸图片,首先把它们缩放到同样的尺寸,然后添加为图片资源.在程序运行时,随着选择的改变,从当前图片逐渐过渡到另一张图片. 开发工具:VC6.0: 相关API: GetDIBs, SetDIBitsToDevice; 运行效果如下:   主题代码量很小,所以可以完整列出如下:     CODE_ImgSwit

美国两房渐退中国资产不打水漂

美国财政部上周五公布了一项针对美国住房融资市场以及"两房"("房地美"与"房利美")的改革白皮书,将通过三大改革方案来减少政府在住房抵押贷款市场扮演的角色. 此举一出,立即在大洋彼岸的中国激起千层浪.作为"两房"债券的主要海外持有者,不少人开始担忧中国所持有的债券是否会受影响.包括房利美前首席信贷官.美国企业家研究所高级研究员平托(Edward Pinto)在内的多位专家也对<第一财经日报>记者表示不必担忧.也不必

风险投资潮水渐退去 社交网站如何吸引VC眼光

中介交易 SEO诊断 淘宝客 云主机 技术大厅 北京时间2月4日,据国外媒体报道,随着越来越多的人比以往任何时候更多地聚集到社交网站,另一个群体也在关注着社交网站,这部分人就是投资者.随着经济低迷期的来到及消费者支出的减少,对互联网企业的投资将更谨慎.那么什么样的社交网站将受到投资人的青睐呢? 在2006年和2007年期间,网络初创企业获得的风险投资额拥有两位数的增长速度.但现在投资人对互联网公司不再感冒,因为其担心2005年和2006年期间创业的企业可能是Web 2.0网络泡沫的代表. Kep

“宝宝”浪潮渐退,电商巨头盯上票据市场

"宝宝"浪潮之后,电商巨头们将目光纷纷转向票据市场,一轮票据理财激战再度袭来.而从"宝宝"基金理财到P2P借贷再到票据理财,电商大佬们的金融野心也越来越大. "新宠"票据贷引巨头激战 近日,苏宁云商金融公司推出的系列票据理财产品,均是和上海金银猫票据理财平台合作,而几乎同时,微财富也推出了类似的票据产品. 而事实上,早在今年4月,淘宝理财频道的"招财宝"就已率先推出票据贷款产品,并持续处于供不应求的状态.首批上线的4只票据贷产

使用CSS3和Checkbox实现JQuery的一些效果

 show()/hide()的实现 show()/hide()的实现主要控制元素的display属性. html: XML/HTML Code复制内容到剪贴板 <div id="box"> <input type="checkbox" id="sh"/> <label for="sh">show/hide</label> <div id="shbox"&

javascript实现图片循环渐显播放的方法_javascript技巧

本文实例讲述了javascript实现图片循环渐显播放的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <title>图片的循环渐显播放效果代码</title> <head> <!--1.将下面的代码插入到HEML的<head></head>之间: --> <script language=javaScript> <!--// sandra0 = new Image()