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

Obi 18.03.2010 16:23

Лучше скажите зачем вам это нужно, а то вынос мозга какой-то получается.

treety 18.03.2010 16:30

Цитата:

Сообщение от Obi (Сообщение 893960)
Лучше скажите зачем вам это нужно, а то вынос мозга какой-то получается.

ну мне нужно чтобы класс самостоятельно записывал результат какой либо обработки
например по ссылке на объект или переменную
..и чтобы не имело значение в какой класс конкретно..

допустим есть класс "умножения"
ему дали числа и ссылку на то куда вернуть результат
он на умножал что нужно и положил туда куда сказали
вот и всё

Котяра 18.03.2010 16:34

Цитата:

но как мне передать именно ссылку на объект, а не объект в "ссылка_на_объект_1"?
ссылка будет полюбому, кроме ссылки вы никак объект не передадите
Код AS3:

public function multiplier(a:int,b:int,resObject:Object):void
{
resObject["result"] =a*b;
}


Obi 18.03.2010 16:41

> допустим есть класс "умножения"
> ему дали числа и ссылку на то куда вернуть результат

Пусть результат возвращает метод. Откуда вызываете, там и распоряжайтесь результатом.

Котяра 18.03.2010 16:52

ну умножение скорей всего для примера.
вот другой вариант двинуть объект в точку x,y,
Код AS3:

public function moveHero(x:int,y:int,hero:DisplayObject):void
{
// например проверяем на препятствие
if (isValidPoint(x,y))
{
hero.x=x;
hero.y=y;
}
}


treety 18.03.2010 17:03

Вложений: 1
Цитата:

Пусть результат возвращает метод. Откуда вызываете, там и распоряжайтесь результатом.
как это выглядит?

Цитата:

ну умножение скорей всего для примера.
вот другой вариант двинуть объект в точку x,y,
ну тут нету взаимодействия двух классов каким оно нужно..

Вложение 24042
в аттаче пример который нужно заставить работать..

Котяра 18.03.2010 19:11

нужно кому?
выложите код проблемного места в виде текста. качать аттач не буду.

treety 18.03.2010 19:55

Код AS3:

package{
        import flash.display.MovieClip;
        import Multiply;
        public class Main extends MovieClip {
                var _a;
                var _b;
                var res;
                function Main () {
                        res = 0;
                        _a = 20;
                        _b = 40;
                        var mlt = new Multiply ({val_1:_a, val_2:_b}, res, multiplyComplit);
                }
                public function multiplyComplit() {
                        trace (res);
                        //а должно быть 800!
                        //как записать результат умножения из Multiply в переменную res??
                }
        }
}
 
package{
        public class Multiply{
                var _towrite;
                var _callback;
                function Multiply (toread, towrite , callback) {
                        var reslt = toread.val_1*toread.val_2;
                        towrite = reslt;
                        callback ();
                }
        }
}


Obi 18.03.2010 20:34

Код AS3:

package{
        import flash.display.MovieClip;
        import Multiply;
        public class Main extends MovieClip {
                var _a;
                var _b;
                var res;
                function Main () {
                        res = 0;
                        _a = 20;
                        _b = 40;
                        var mlt = new Multiply ({val_1:_a, val_2:_b}, res, multiplyComplit);
                }
                public function multiplyComplit(result) {
                      res = result;
                        trace (res);
                        //а должно быть 800!
                        //как записать результат умножения из Multiply в переменную res??
                }
        }
}
 
package{
        public class Multiply{
                var _towrite;
                var _callback;
                function Multiply (toread, towrite , callback) {
                        var reslt = toread.val_1*toread.val_2;
                        callback.apply(null, reslt);
                }
        }
}

В классе Multiply переменная towrite хранит ссылку на значение переменной(а не на переменную) res в классе Main, следовательно при присвоении значения towrite вы просто присваиваете значение переменной towrite, не затрагивая переменную res и ее значение.

И почему вы так не любите типизацию? Это же удобно.

treety 18.03.2010 21:11

Цитата:

В классе Multiply переменная towrite хранит ссылку на значение переменной(а не на переменную) res в классе Main, следовательно при присвоении значения towrite вы просто присваиваете значение переменной towrite, не затрагивая переменную res и ее значение.
вот оно оно!!! =)
..именно те слова которые я пытался с самого начала поста донести
возможно ли результат передавать не с функцией а по ссылке на переменную?
Код AS1/AS2:

И почему вы так не любите типизацию? Это же удобно.

ну типизацией я потом займусь
мне сейчас важнее принцип..


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

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