Просмотр полной версии : Передать переменную по ссылке
Добрый день!
Ситуация следующая:
На главной временной шкале раз в 3 секунды создается экземпляр класса наследника MovieClip. Ссылки на них никак не сохраняются.
Еще на той же временной шкале создается массив, элементы которого постоянно меняются.
Так вот нужно как-то из экземпляра класса добраться до этого массива на главной шкале! Как это сделать?
ps^ После 5ти лет программирования на php ничего не придумал кроме как попробовать сделать массив глобальной переменной (но не получилось) или передать ссылку на массив в экземпляр класса (что тоже не получилось)... Как это в as делаеся?
Вы правильно мыслите. Тут два пути: либо объект сам пойдет за ссылкой, либо его этой ссылкой снабдят. Почему у Вас не получилось - поймет дифдиагноз. Код дайте )
На главной временной шкале раз в 3 секунды создается экземпляр класса наследника MovieClip. Ссылки на них никак не сохраняются.
А вот это Вы поторопились ультиматировать. Наверняка же добавляете (addChild или разновидность) их в DisplayList ). А это уже статья ссылка.
После вашего ответа меня осенило)
Передал ссылку, заработало!
Но а можно ли из самого класса пойти и взять любую из переменных временной шкалы или они никак не связаны?
И еще. Вот сам код.
Этот тут я пытался в ub передать ссылку на mines
Оцените сам код, подскажите может что-то по другому делать нужно было.
Учусь я :)
var mines = new Array();
var minesCount:int = 15;
var timer:Timer = new Timer(3000);
timer.addEventListener(TimerEvent.TIMER,new_subm);
timer.start();
drop_mine();
function new_subm(evt:Event):void {
var ub:Subm = new Subm(mines);
addChild(ub);
ub.go();
}
function drop_mine():void {
for (var i:int = 0; i < minesCount; i++) {
var mine:MovieClip = new Mine();
mine.x = Math.random()*this.width;
mine.y = Math.random()*200+140;
mine.alpha = .5;
this.addChild(mine);
mines[mines.length] = mine;
}
}
Привыкайте к конвенциям AS3 кодирования (http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions). си стайл режет глаза.
и не пишите в кадрах - пишите в классах.
заведите документ класс и скопируйте код туда. ( соответственно описав переменные и методы как public/private и поместив код вне ф-ций в конструктор)
в методе new_subm вы создаёте ub - а как вы собираетесь его удалять? поместите ub в массив ubList .
mines[mines.length] = mine; ->mines.push(mine)
и вообще криво всё как-то.. как я понял вы из ub вызываете drop_mine?
не надо так делать. лучше делать через события.
И вообще я бы вам посоветовал сначала чуток почитать, например, Мука - сейчас у вас каша в голове..
Я с AS третий день только играюсь и в голове и правда каша, но думаю я ее разгребу.
Спасибо за ответ
и на счет передачи по ссылке или по значению:
все что наследуется от Object передается по ссылке, все остальное (String, uint, и т.д.) по значению
А есть в AS глобальные переменные? Ну вот чтобы не передавать ссылку, а просто полезть в главную временную шкалу и просто взять там то что нужно
забудьте про шкалу.. шкала есть только в мувиклипах.
основной класс документа может быть и без таймлайна.
глобальные переменные зло. но если очень и очень надо можно сделать.
заведите в классе CustomClass статическую переменную
static public var staticVar:SmthClass;
доступ извне: CustomClass.staticVar
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.