Просмотр полной версии : Вызов функции внутри класса
MyChemic
21.04.2008, 16:45
Добрый день, прошу помощи. Есть класс, в котором объявлены методы:
import mx.transitions.*;
import mx.transitions.easing.*;
import mx.utils.Delegate;
class myClass extends MovieClip{
public function myClass(){
b();
}
private function b(){
var a = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
a.onMotionFinished = function(){
Delegate.create(this, d);
}
}
private function d(){
trace("working");
}
}
соответственно, не могу вызвать функцию d из такой конструкции. Как быть? Задача: Необходимость по завершению процесса Tween вызвать функцию d();
CrazyFlasher
21.04.2008, 17:19
a.onMotionFinished = Delegate.create(this, d);
Жень Шень
21.04.2008, 17:29
и это тоже поменять, мне так кажется:
var a = new Tween(this, "_y", Strong.easeOut, 0, 100, 1, true);
MyChemic
21.04.2008, 17:30
угу, понятно. Но это примерный случай, а в реале вложеность немного иная:
private function b(){
var a = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
a.onMotionFinished = function(){
var b = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
b.onMotionFinished = function(){
var c = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
c.onMotionFinished = Delegate.create(this, d);
}
}
}
private function d(){
trace("working");
}
как в таком случае быть? То есть как достучаться до функции, в независимости от вложенности?
Жень Шень
21.04.2008, 17:53
Посмотри ссылку (http://www.flasher.ru/forum/showthread.php?t=111024). Там в третьем посту iNils помог найти, как обращаться к анонимной функции. Должно помочь.
MyChemic
21.04.2008, 18:14
мне кажется не совсе то, там "слушатель" ждет события загрузки изображения. У меня же нет загрузки изображения, даже, если загрузить в пустую изображение, а потом его удалить, то все равно почему-то конструкция:
private function b(){
var a = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
a.onMotionFinished = function(){
var b = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
b.onMotionFinished = function(){
var c = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
c.onMotionFinished = function(){
var _mc:MovieClipLoader = new MovieClipLoader();
_mc.addListener(this);
_mc.loadClip("pic.jpg", _root);
}
}
}
}
private function onInitLoad(target_mc:MovieClip){
_root._mc.removeMovieClip();
trace("working");
}
не работает. Может быть можно как-то повесить "слушателя" на Tween класс? К примеру:
var tw = new Tween(mc, "_y", Strong.easeOut, 100, 0, 1, true);
tw.addListener("onMotionFinished", d);
function d(){
trace("working");
}
???
Жень Шень
21.04.2008, 18:46
Не знаю, как передается ссылка на mc, но так работает
import mx.transitions.*;
import mx.transitions.easing.*;
import mx.utils.Delegate;
class myClass extends MovieClip {
var mc:MovieClip;
public function myClass() {
mc = this;
b(mc);
}
private function b() {
var f = d;
var a = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
a.onMotionFinished = function() {
trace(1);
var b = new Tween(mc, "_y", Strong.easeOut, 100, 0, 1, true);
b.onMotionFinished = function() {
trace(2);
var c = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
c.onMotionFinished = function() {
trace(3);
f();
};
};
};
}
private function d() {
trace("working");
}
}
MyChemic
21.04.2008, 18:53
Не знаю, как передается ссылка на mc, но так работает
import mx.transitions.*;
import mx.transitions.easing.*;
import mx.utils.Delegate;
class myClass extends MovieClip {
var mc:MovieClip;
public function myClass() {
mc = this;
b(mc);
}
private function b() {
var f = d;
var a = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
a.onMotionFinished = function() {
trace(1);
var b = new Tween(mc, "_y", Strong.easeOut, 100, 0, 1, true);
b.onMotionFinished = function() {
trace(2);
var c = new Tween(mc, "_y", Strong.easeOut, 0, 100, 1, true);
c.onMotionFinished = function() {
trace(3);
f();
};
};
};
}
private function d() {
trace("working");
}
}
супер, спасибо большое, оказывается все дело в выделеной строчки, так мы вначале инициализируем переменную и даем ей понять, что она и есть наша внешняя функция. Гранд мерси)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.