|
|
|||||
Регистрация: Mar 2016
Сообщений: 52
|
Как вытащить ссылку ?
Всем доброго времени суток!
Вкратце ситуация такая, есть класс - библиотека(условно), есть класс которому нужно получить из библиотеки ссылку на звук(Sound) чтобы у себя его проиграть. Сейчас я делаю это так, //Это класс библиотеки var SOURСE_MUSIC:Vector.<Sound>(10); public function get_mus(N:int,S:Vector.<Sound>):void { S.push(SOURСE_MUSIC[N]); } //---- Меня смущает то что если не использовать вектор, а просто передавать Sound и приравнивать его "=" к исходным данным, то он тупо не достается, достается только вектор и только в который записали командой push, почему так ? Ниже приведен не рабочий вариант Такой Sound S на другом конце просто null Последний раз редактировалось Egstond; 12.05.2017 в 16:57. |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
зачем второй вектор? зачем первый? почему забор по индексу? откуда в векторе звуки?
совершенно не понятно зачем выбран такой извращенный способ. если передаете вместо вектора sound то он внутри функции и не будет присвоен. задача функции возвращать этот звук, это она делать и должна. |
|
|||||
Регистрация: Mar 2016
Сообщений: 52
|
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено через 19 минут var cache:Object={}; public function get_mus(id:String):Sound{ return cache[id]||(cache[id]=new getDifinitionByName(id)) Других варианты есть у кого нибудь ? Добавлено через 58 минут Еще раз сформулирую проблему. Объект звука нужно создать 1 раз, а дальше только распоряжаться ссылками на него. Вот такой вариант прокатит ? функция будет возвращать лишь ссылку, или где то по ходу ее выполнения все равно будет происходить копирование самих данных звука ? Последний раз редактировалось Egstond; 12.05.2017 в 18:02. |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
в моем варианте звук создается только один раз, а потом возвращает его. смысл вообще этой функции? почему просто не обращаться к индексу вектора если знаете что точно лежит звук?
|
|
|||||
Регистрация: Mar 2016
Сообщений: 52
|
Цитата:
Функция с возвращаемым типом Sound будет ссылку возвращать, или копию объекта ? |
|
|||||
Так придётся сразу инициализировать при загрузке все звуки
var cache:Object={}; public function get_mus(id:String):Sound{ return cache[id]||(cache[id]=new getDifinitionByName(id)) } В AS3 нет оператора копирования для классов. Они всегда передаются только по ссылке. Исключением являются только примитивные типы данных.
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Mar 2016
Сообщений: 52
|
ок, всем спасибо
|
|
|||||
Функция называется getDefinitionByName(). При этом id должен в точности соответствовать названию класса звука. Так, в качестве дополнения
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 11:04. |
|
« Предыдущая тема | Следующая тема » |
|
|