Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   функция инкремента (http://www.flasher.ru/forum/showthread.php?t=143533)

TIЕSTO 18.08.2010 18:43

функция инкремента
 
Здравствуйте !!
пытался сделать ф-ю инкремента но столкнулся с зависанием .
помогите исправить .
ниже приведена сама ф-я myFun которая начинает счет с указанного в mylib места .
результат показывает на экране.

mylib.as

Код AS3:

package {
        import flash.display.*;
        import flash.text.*;
 
        public class mylib extends Sprite
        {
 
                public var secMsg:TextField;
                public var player:Number = myFun(7);
 
                public function mylib()
                {
                        stage.frameRate = 30;
                        secMsg = new TextField();
                        secMsg.autoSize = TextFieldAutoSize.LEFT;
                        secMsg.text = String(player);
                        secMsg.x = 140;
                        addChild(secMsg);
                }
        }
}

myFun.as

Код AS3:

package
{
        import flash.utils.*;
        import flash.events.*;
        import flash.text.*;
 
    public function myFun(count:Number):Number
    {
            var secMsg:TextField;
        var count:Number;
 
        var timer:Timer = new Timer(1000,0); 
        timer.addEventListener(TimerEvent.TIMER, timerListener);
        timer.start();
 
    function timerListener(e:TimerEvent):void
    {   
        if (count <= 60)
        {
            secMsg.text = String(count);
            count++;                 
        }
      }
      return count;
    }
  }


Hidest 18.08.2010 20:54

Тихий ужас, а не код... Возвращаете значение в хэндлере (да еще и вложенном), который не может ничего возвращать. Зачем-то ставите таймер на бесконечный повтор, и в нем считаете сколько раз он отработал (не лучше сразу делать new Timer(1000,count)). Count у вас не определяется параметром функции... И вообще все тут не будет так работать, как вы хотели. Используйте просто Timer!

Код AS3:

package {
        import flash.display.Sprite;
        import flash.text.textField;
        import flash.utils.Timer;
 
        public class mylib extends Sprite
        {
 
                public var secMsg:TextField;
                public var count:Number;
                public var timer:Timer;
 
                public function mylib()
                {
                        secMsg = new TextField();
                        secMsg.autoSize = TextFieldAutoSize.LEFT;
                        secMsg.x = 140;
                        addChild(secMsg);
 
                        count = 7;
 
                        timer = new Timer(1000,count); 
                        timer.addEventListener(TimerEvent.TIMER, timerHandler);
                        timer.start();
                }
 
              public function timerHandler(event:TimerEvent):void
              {
                        secMsg.text = String( (event.target as Timer).currentCount        );
              }
 
        }
}


dimarik 18.08.2010 23:46

Функция инкремента

Разберитесь, что есть функция, а что есть инкремент.


Часовой пояс GMT +4, время: 18:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.