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

Ваисилй 01.12.2009 15:39

Как передать в класс переменную по ссылке?
 
В основном коде:
Код AS3:

public var sp:Sprite = new Spite();
addChild(sp);

класс:
Код AS3:

package 
{
        // simple base class for 3D objects
        public class Mesh3D
        {
              //как здесь использовать sp?
          }
}


lighto 01.12.2009 15:47

Код AS3:

package 
{
// simple base class for 3D objects
  public class Mesh3D
  {
      public function Name(sp:Sprite)
      {
          //Какието ваши действия
      }
  }
}

такое попробуйте

Добавлено через 1 минуту
затем вызывайте функцию где надо проставляя параметр sp

Ваисилй 01.12.2009 16:36

основной код
Код AS3:

import temp;
var sp:Sprite = new Sprite();
 
addChild(sp);
var t:temp;
t.Name2(sp);



класс
Код AS3:

package 
{
        import flash.display.Sprite;
        public class temp
        {
                public function Name2(sp:Sprite)
                {
                        sp.graphics.lineStyle(2, 0x00FF00, 1);
                        sp.graphics.drawRect(0,0,500,500);
                }
        }
}

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

А если придется использовать эту ссылку в разных функциях можно ли обойтись без аргумента?

wvxvw 01.12.2009 17:16

1. В названии класса первая буква должна быть прописной.
2. Если вы не создадите экземпляр класса, то он, естесственно никогда сам не создасться.
3. Первая буква в имени функции должна быть строчной.
4. У функции должен быть указан возвращаемый тип.

Ваисилй 01.12.2009 17:38

1,3 - не согласен. почему?
2,4 спасибо исправил, заработало

dimarik 01.12.2009 22:33

Цитата:

Как передать в класс переменную по ссылке?
В экземпляр класса.

wvxvw 01.12.2009 22:35

Цитата:

Сообщение от Ваисилй (Сообщение 869499)
1,3 - не согласен. почему?

Потому что с таким Г никто не захочет работать потом.

etc 02.12.2009 00:00

Цитата:

Сообщение от Ваисилй (Сообщение 869499)
1,3 - не согласен. почему?

Потому что есть стандарт. Кто его не соблюдает, идёт лесом.

lighto 02.12.2009 08:22

Так помогло? а без аргумента как вы его отправите? если нашли способ расскажите)

Ваисилй 02.12.2009 18:20

Цитата:

Сообщение от lighto (Сообщение 869659)
Так помогло? а без аргумента как вы его отправите? если нашли способ расскажите)

Спасибо, помогло. И способ без аргумента нашел. Можно классе объявить глобальную переменную такого же типа:
Код AS3:

package 
{
        import flash.display.Sprite;
        public class Temp
        {
        public var refSp:Sprite;
                public function name2():void
                {
                        refSp.graphics.lineStyle(2, 0x00FF00, 1);
                        refSp.graphics.drawRect(0,0,500,500);
                }
        }
}

а в основном коде прописать присвоение:
Код AS3:

import tmp:Temp = new Temp;
var sp:Sprite = new Sprite();
tmp.refSp = sp;
tmp.name2;



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

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