2007/09/04 | AS3绘图及帧频事件代码练习
类别(Flash学习笔记) | 评论(2) | 阅读(1003) | 发表于 15:43

主场景本身是一个DisplayObjectContainer对象,因而可以直接给它添加addChild,还可以直接添加帧频事件侦听。下面的代码就是关于这个内容的一段练习。

var temp:Number = 0;
var mc_array:Array = new Array();  //记录全部的MC,用于删除。
var w:Number = 500;
var h:Number = 400;
var len:Number = 100;

function drawBox (evt:Event ) {
 if ( temp < 300) {
  mc_array[temp] = new MovieClip();
  addChild (mc_array[temp]);

  var g:Graphics = mc_array[temp].graphics;
  g.beginFill (Math.random()*0xFFFF,0.8);
  switch ( Math.floor(Math.random()*3) ) {
   case 0 :
    g.drawRect (Math.random () * w,Math.random () * h,Math.random () * len,Math.random () * len);
    break;
   case 1 :
    g.drawCircle (Math.random () * w,Math.random () * h,Math.random () * len);
    break;
   case 2 :
    g.drawEllipse (Math.random () * w,Math.random () * h,Math.random () * len,Math.random () * len);
  }
  temp++;
 } else {
  for (var i = 0; i< mc_array.length; i++) {
   removeChild ( mc_array[i]);
  }
  mc_array = new Array();
  temp= 0;
 }
}
addEventListener ( Event.ENTER_FRAME,drawBox );

舞台Stage 对象已经被stage取代,但是具体怎么用还没测试出来。这里的switch结构只是为了展示一下几种画图函数的用法,对效果没多大帮助,还不如只用画矩形效果来得好。随机颜色,我使用Math.random()*0xFFFF,使得整体的颜色呈现偏蓝。

3

评论Comments