Форум 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=139293)

envy 27.04.2010 17:50

Вопрос про раскадровку
 
Задача в том, чтобы сделать покадровую анимацию движения человечка за мышкой. Решила создать мувиклип, и вместила покадрово все позы человечка (изначально были в формате png).
Высчитала угол, смещение, человечек плавно двигается куда надо, но когда стала делать анимацию по кадрам столкнулась с проблемой, что функция CurrentFrame что-то не работает. Возвращает значение Undefined. При этом GotoAndPlay делает goto, а играть не играет. Играет только play. Вызываю функции на EnterFrame, но даже такая конструция :
Код AS3:

function render(e:Event) { //
  dude.gotoAndStop(dude.CurrentFrame);               
 trace(dude.CurrentFrame);
}

(лишнее убрала) ничего не выдает. dude - экземпляр класса, муви клип, который я кинула на сцену.
Весь инет перерыла, помогите, пожалуйста!

derhab 27.04.2010 17:52

а что такое у вас CurrentFrame?

i.o. 27.04.2010 17:52

а что это за такая функция CurrentFrame ??

mickfallout 27.04.2010 17:53

Код AS3:

dude.gotoAndStop(dude.CurrentFrame);

и в чём смысл? просто stop() уже не модно?
не могу понять смысла программы, выкладывайте весь класс полностью чтоли...

i.o. 27.04.2010 17:54

"просто stop() уже не модно?"
+5))

kayn 27.04.2010 18:00

Возможно в момент вызова currentFrame(), точка воспроизведения еще не определена. Это можно исправить строкой gotoAndStop(1) сразу после появления мувика. Выложи весь код, не стесняйся.

mickfallout 27.04.2010 18:08

надо что-то типа такого чтоль?
Код AS3:

package  {
 
        import flash.display.*
        import flash.events.*
        public class Main extends Sprite {
                private var targetX:int;
                private var targetY:int;
                public function Main() {
                        super();
                        var sprite1:Sprite = new Sprite();
                        var back:Sprite = new Sprite()
                        addChild(back);
                        back.graphics.beginFill(0xF0F0F0);
                        back.graphics.drawRect(0, 0, stage.width, stage.height);
                        back.graphics.endFill()
                        sprite1.graphics.beginFill(0x000000, 1);
                        sprite1.graphics.drawRect(0, 0, 25, 25);
                        sprite1.graphics.endFill()
                        addChild(sprite1);
 
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                        function enterFrameHandler(event:Event):void
                        {
                                if ((sprite1.x != targetX) || (sprite1.y != targetY))
                                        sprite1.rotation += 1;//тут Вам надо делать что-то для анимации. например unit.nextFrame();
                                if (sprite1.x > targetX)
                                        sprite1.x--;
                                if (sprite1.x < targetX)
                                        sprite1.x++;
                                if (sprite1.y > targetY)
                                        sprite1.y--;
                                if (sprite1.y < targetY)
                                        sprite1.y++;
                        }
                        function moveHandler(event:MouseEvent):void
                        {
                                targetX = event.stageX;
                                targetY = event.stageY;
 
                        }
                }
        }
}


i.o. 27.04.2010 18:10

kayn, в MovieClip функции currentFrame не существует, и создать ее не получится

mickfallout 27.04.2010 18:16

откуда вы взяли что currentFrame - функция? только оговорка у топик стартера. в коде всё правильно, обращается как к свойству а не как к функции.

i.o. 27.04.2010 18:17

mickfallout, дак там с большой буковки CurrentFrame прописано у автора...


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

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