Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Функция родителя не видна из исполняемой функции setInterval'а (http://www.flasher.ru/forum/showthread.php?t=99054)

StreetPeople 27.07.2007 00:46

Функция родителя не видна из исполняемой функции setInterval'а
 
Скажем есть класс родителя, в котором определена некая функция
Код:

class Action implements interfaceAction
{
        function getValueByParams( args:Object ) : Number
        {
                // T - время
                // A - Ускорение

                return args.A*args.T*args.T/2;
        }
}

и есть дочерний класс, из которого каждую миллисекунду мы хотим доставать значения функции класса родителя. - При обращеннии через функцию setInterval'а к функции класса родителя мы её не находим
Код:

class Movies extends Action
{
        function StartXMovie( ){
                this.movieObject.A = 1;
                this.movieObject.T = 7;
                trace( getValueByParams( {A:1, T:7} ) );//24.5
                this.movieObject.InitMovieInterval = setInterval(this.setXPosition, this.movieObject.interval, this.movieObject );
        }

        function setXPosition( ){
//                trace( getValueByParams( {A:1, T:7} ) );//Undefined
        }
}

В же чём причина? Почему мы можем получить возвращаемое значение функции родительского класса из функции дочернего класса, но не можем получить это значение из такой же функции того же дочернего класса, вызываемой setInterval'ом???

Подскажите, плиз, как это можно сделать...


PS: Пытаюсь реализовать равномерно-ускоренное движение объекта. Если есть другой способ в рамках концепции классов, помимо setInterval, хотелось бы узнать...

etc 27.07.2007 01:08

Не interfaceAction, а IAction надо называть, хотя бы.
У setInterval два синтаксиса. В данном случае применяется неправильный синтаксис.

Нужно так:

Код:

setInterval(this, 'setXPosition', this.movieObject.interval, …);
Только зачем там передается аргумент в функцию — непонятно, он все-равно не используется.

StreetPeople 27.07.2007 06:27

Я не стал дописывать код, поскольку обнаружил ошибку и сразу же переключился на неё. Конечно аргумент будет использоваться...

К сожалению, во флэш регламентирована только одна функция реализации интервалов, в рамках "неправильного синтаксиса".


Флэшка ожила, спасибо =)
Насчёт названия интерфейса отдельное "спасибо" =)...

Kikasso 27.07.2007 08:29

Цитата:

Сообщение от StreetPeople
К сожалению, во флэш регламентирована только одна функция реализации интервалов, в рамках "неправильного синтаксиса".

Вот прямо из хелпа:
Цитата:

setInterval function
Код:

setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number


Это глобальные дела, где там этот таймер сидит, бог его знает.

etc 27.07.2007 10:13

Цитата:

Сообщение от StreetPeople
Насчёт названия интерфейса отдельное "спасибо" =)...

Судя по кавычкам, вы не приняли это к сведенью. А надо было.


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

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