Проблема со случайно окрашенным фоном - PullRequest
0 голосов
/ 26 августа 2010

Я впервые использую StackOverflow, поэтому, пожалуйста, будьте дружелюбны и понимаем.
Несколько дней назад я заинтересовался ActionScript.Я скачал FlashDevelop (бесплатная IDE) и FlexSDK4.Затем я изучил основы из некоторых учебных пособий.
Пока я не занимаюсь разработкой какого-либо крупного проекта, я просто делаю тесты.
В любом случае, решение моей проблемы действительно важно для меня.Я искал его, но не смог найти.
У меня есть только одна кнопка и фон в моем приложении.И кнопка, и фон (ниже: «bg») являются объектами класса Sprite.
Когда я нажимаю кнопку, фон окрашивается квадратами случайных цветов размером 10x10 пикселей.Проблема в том, что чем больше я нажимаю кнопку, тем дольше мне приходится ждать, пока фон изменится.И это еще не все!Я могу изменить фон ровно 54 раза!В 55-й раз он совсем не меняется.

package {
    // some imports here

    public class Main extends Sprite {
        private var button:Sprite;
        private var bg:Sprite;

        public function Main ():void {
            init();
        }

        private function init (e:Event=null):void {
            addChild (bg);
            // in the original code there are some lines here,
            // in which the button is created
            addChild (button);
            button.addEventListener (MouseEvent.CLICK, btnClick);
        }

        private function btnClick (event:MouseEvent):void {
            var x:uint, y:uint, color:uint;
            for (y=0; y<30; y++) {
                for (x=0; x<40; x++) {
                    color=Math.round(Math.random()*16777215);
                    bg.graphics.beginFill (color);
                    bg.graphics.drawRect (x*10, y*10, 10, 10);
                    bg.graphics.endFill ();
                }
            }
        }
    }
}

Код такой короткий, потому что я удалил много пустых строк.Я оставил только важные.
Что не так с этим кодом?Пожалуйста, помогите мне.
Заранее спасибо.

1 Ответ

1 голос
/ 26 августа 2010

очистить графику перед циклом

 var x:uint, y:uint, color:uint;
 bg.graphics.clear();
 for (y=0; y<30; y++) {//etc
...