PDA

Просмотр полной версии : Как получить доступ к другому экземпляру одного класса


chebyster
08.12.2009, 18:32
Мой вопрос в комментах класса Suck. Если непонятно написал или мало информации, скажите какая инфа нужна чтобы вы смогли дать мне ответ. Все мозги уже себе отымэл, ну не понимаю(((( В экземпляре класса Fuck находится массив в котором три экземпляра класса Suck...

public class Fuck extends MovieClip
{
var littleSuckers:Array = new Array();
var currentSucker:Number = new Number();
public function Fuck()
{
//
}

public function init():void
{
//всего 3 штуки
for(var i = 0; i < 3; i++)
{
littleSuckers.push(new Suck());
addChild(littleSucker[i]);
}
}
}

public class Suck extends MovieClip
{
public function Suck()
{
//
}

public function changeSucker():void
{
//Мой ВОПРОС!!!!!!!!!
//как из этой функиции например экземпляра littleSucker[1](см. определение класса Fuck)
//вызвать функцию newSucker() экземпляра littleSucker[2]
//Мой ВОПРОС!!!!!!!!!
}
public function newSucker():void
{
//
}
}

bicubic_bublic
08.12.2009, 18:36
есть несколько вариантов решения задачи:
можно при создании нового Suck регистрировать в нем ссылку на массив littleSuckers
можно в конструкторе Suck добавлять ссылку на него в static-переменную (опять же массив)

vitalFriend
08.12.2009, 18:45
А может просто ошибка в использовании переменных?

littleSuckers.push(new Suck()); - littleSuckers переменная определена
addChild(littleSucker[i]); - littleSucker переменная неопределена

bicubic_bublic
08.12.2009, 18:50
А может просто ошибка в использовании переменных?

littleSuckers.push(new Suck()); - littleSuckers переменная определена
addChild(littleSucker[i]); - littleSucker переменная неопределена
в этом коде нет ошибки

Котяра
08.12.2009, 19:35
так не надо делать.. если вам нужны соседи, то в конструкторе передавайте их
или в конструкторе передавайте ссылку на массив всех littleSuckers
public class Fuck extends MovieClip
{
var littleSuckers:Array = new Array();
var currentSucker:Number = new Number();
public function Fuck()
{
//
}

public function init():void
{
//всего 3 штуки
for(var i = 0; i < 3; i++)
{
littleSuckers.push(new Suck(littleSuckers));
addChild(littleSucker[i]);
}
}
}

public class Suck extends MovieClip
{
var littleSuckers:Array = null;
public function Suck($littleSuckers:Array)
{
littleSuckers =$littleSuckers;
//
}

public function changeSucker():void
{

littleSuckers[2].newSucker()

}
public function newSucker():void
{
//
}
}
Можно вообще через
(littleSucker[1].parent as Fuck).littleSuckers[2].newSucker()
но это неправильная архитектура.