打印

[AS3] 求教一个计算方法!

大家运行下如下代码,小弟有个问题。我要生成4中不同颜色块随机摆放,每种色块的总数都是偶数,请教如何来计算呢?

var w:int=20;
var h:int=20;

function getSprite(p_a:uint):Sprite{
       var sprite:Sprite = new Sprite();
       sprite.graphics.beginFill(p_a)
       sprite.graphics.lineStyle(1,0x000000);
       sprite.graphics.drawRect(0,0,10,10);
       sprite.graphics.endFill();
       return sprite;
}

function display(){
       for(var i:int=0;i<w;i++){
              for(var j:int=0;j<h;j++){
                     var random : int = Math.random() * 4 >> 0;
                     
                     var sprite:Sprite = getSprite(0xCCCCCC);
                     sprite.x = (i % w) * (sprite.width - 1);
                     sprite.y = (j % h) * (sprite.height- 1);
                     this.addChild(sprite);
                     
              }
       }
}
display()

[ 本帖最后由 yzgxww 于 2008-5-28 20:55 编辑 ]
咱水区牛人可真多啊!俺也想成牛人!
复制内容到剪贴板
代码:
var w:int=20;
var h:int=20;
var color_array:Array=[{_c:0xff0000,_p:100},{_c:0xff00ff,_p:100},{_c:0x00ff00,_p:100},{_c:0x0000ff,_p:100}];//第二个属性_p就可以指定这种颜色的方块显示多少个
function getSprite(p_a:uint):Sprite {
    var sprite:Sprite = new Sprite();
    sprite.graphics.beginFill(p_a);
    sprite.graphics.lineStyle(1,0x000000);
    sprite.graphics.drawRect(0,0,10,10);
    sprite.graphics.endFill();
    return sprite;
}
function display() {
    for (var i:int=0; i<w; i++) {
        for (var j:int=0; j<h; j++) {
            var _n:uint =int(Math.random ()*color_array.length );
            color_array[_n]._p--;//显示一次,计数属性-1
            var sprite:Sprite = getSprite(color_array[_n]._c);
            color_array[_n]._p==0&&color_array.splice (_n,1);//计数属性为0了,说明数量已到,从数组中删除此颜色
            sprite.x = (i % w) * (sprite.width - 1);
            sprite.y = (j % h) * (sprite.height- 1);
            this.addChild(sprite);
        }
    }
}
display();
http://www.flash023.cn 终极讨厌
color_array[_n]._p==0&&color_array.splice (_n,1)
这种写法的含义?
咱水区牛人可真多啊!俺也想成牛人!
相当于if(){}    要&&前面的条件满足了才会执行&&后面的表达式。
另外楼主代码中的 (i % w)  (j % h)没有意义,因为 for中的条件为 i<w   j<h 所以对i j 取模在这里是多余的,直接sprite.x = i  * (sprite.width - 1); sprite.y = j* (sprite.height- 1);就行了
http://www.flash023.cn 终极讨厌

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
学习了,多谢斑竹!
咱水区牛人可真多啊!俺也想成牛人!

TOP