查看完整版本: 布朗运动中没办法用组件来确定分子的数目

sdw85 2008-7-2 21:13

布朗运动中没办法用组件来确定分子的数目

我的意图是想用slider组件来确定里面分子的数目,可是效果并不是我想象的那样
哪位大虾来帮小弟看看啊

bbkx 2008-7-2 23:21

:victory: :victory: :victory:

sdw85 2008-7-3 06:56

多谢谢!!!
那还有没有直接的办法,就是用slider来改变其数目

终极讨厌 2008-7-3 08:43

多次使用init函数

sdw85 2008-7-3 12:45

如何多次啊,请教啊
而且用这种方法我发现刚开始舞台上是不显示什么的,
只有当点击了slider后,才显示
如何让舞台上刚开始就显示呢

[[i] 本帖最后由 sdw85 于 2008-7-3 12:58 编辑 [/i]]

终极讨厌 2008-7-3 18:45

[code]package {
        import flash.display.Sprite;
        import flash.events.Event;

        public class Blmove extends Sprite {
                private var num:Number;
                private var balls:Array=new Array();
                private var friction:Number=0.95;
                public function Blmove():void {
                        slider.addEventListener(Event.CHANGE,q);
                        addEventListener(Event.ENTER_FRAME,s);
                        slider.value=10;
                        slider.dispatchEvent(new Event("change"));
                }
                private function init():void {
                        var _len:uint=balls.length;
                        if (_len <num) {
                                for (var i:Number=_len; i<num; i++) {
                                        var ball:Ball=new Ball(5);
                                        ball.x=Math.random()*stage.stageWidth;
                                        ball.y=Math.random()*stage.stageHeight;
                                        ball.vx=0;
                                        ball.vy=0;
                                        addChild(ball);
                                        bound(ball);
                                        balls.push(ball);
                                }
                        } else if (_len>num) {
                                for (var j:Number=num; j<_len; j++) {
                                        removeChild(balls.pop());
                                }
                        }
                }
                private function q(evt:Event):void {                       
                        num=slider.value;
                        init();
                }
                private function s(evt:Event):void {
                        for (var i:Number=0; i<num; i++) {
                                balls[i].vx+=Math.random()*2-1;
                                balls[i].vy+=Math.random()*2-1;
                                balls[i].x+=balls[i].vx;
                                balls[i].y+=balls[i].vy;
                                balls[i].vx*=friction;
                                balls[i].vy*=friction;
                                bound(balls[i]);
                        }
                }
                private function bound(ball:Ball):void {
                        if (ball.x>stage.stageWidth) {
                                ball.x=stage.stageWidth;
                                ball.vx*=-1;
                                ball.vy*=-1;
                        } else if (ball.x<0) {
                                ball.x=0;
                                ball.vx*=-1;
                                ball.vy*=-1;
                        }
                        if (ball.y>stage.stageHeight) {
                                ball.y=stage.stageHeight;
                                ball.vx*=-1;
                                ball.vy*=-1;
                        } else if (ball.y<0) {
                                ball.y=0;
                                ball.vx*=-1;
                                ball.vy*=-1;
                        }
                }
        }
}[/code]

sdw85 2008-7-3 20:48

还有啊,写在构造函数里的语句有没有顺序之分啊

ycccc8202 2008-7-4 16:12

其他文件下不来。。。

ycccc8202 2008-7-5 16:08

楼主把组件的参数面版的参数也进行了设置所以导致出现问题~

把组件还原为最初状态,用程序进行控制~

sdw85 2008-7-7 07:37

那如何让开始时的初始数目每次都随机啊
而不是在原来的基础上加加减减

终极讨厌 2008-7-7 12:40

public function Blmove():void {
                        slider.addEventListener(Event.CHANGE,q);
                        addEventListener(Event.ENTER_FRAME,s);
                        slider.value=uint(Math.random()*100  );//这里
                      slider.dispatchEvent(new Event("change"));
                }

sdw85 2008-7-7 22:53

我的意思是比如我开始设置的SLIDER的数值是10,则刚开始出来随即的10个分子
然后我把SLIDER的数值改为20 ,舞台上在出现随即的20个分子(相当于每次改变都重新出现)

ycccc8202 2008-7-8 13:26

我做的是每次都刷新随机的啊~

sdw85 2008-7-10 16:06

看到了
谢谢哦
不过你的哪个上面有个语法我不懂
就是…………&&…………的
页: [1]
查看完整版本: 布朗运动中没办法用组件来确定分子的数目