PDA

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


Ваисилй
01.12.2009, 15:39
В основном коде:
public var sp:Sprite = new Spite();
addChild(sp);

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

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

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

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

Ваисилй
01.12.2009, 16:36
основной код
import temp;
var sp:Sprite = new Sprite();

addChild(sp);
var t:temp;
t.Name2(sp);



класс
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
1,3 - не согласен. почему?
Потому что с таким Г никто не захочет работать потом.

etc
02.12.2009, 00:00
1,3 - не согласен. почему?
Потому что есть стандарт. Кто его не соблюдает, идёт лесом.

lighto
02.12.2009, 08:22
Так помогло? а без аргумента как вы его отправите? если нашли способ расскажите)

Ваисилй
02.12.2009, 18:20
Так помогло? а без аргумента как вы его отправите? если нашли способ расскажите)
Спасибо, помогло. И способ без аргумента нашел. Можно классе объявить глобальную переменную такого же типа:

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);
}
}
}

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

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

Gaen
02.12.2009, 22:37
Надеюсь AS4 будет строже и никогда не позволит писать вызов конструкторов и методов без скобок.