Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.10.2016, 22:59
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию as3 присвоение значения Texture

Всем привет. Пытаюсь сделать присвоение значения текстуре, которая обозначена переменной

Код AS3:
private var texture_bg:Texture;
 
private var gui_interface:Array = [
{target_texture:texture_bg}
];
 
gui_interface[0].target_texture = texture;//texture - какая-то сгенерированная текстура.
В итоге получается после этого, что texture_bg указанная в объекте все также остается пустой, то есть null. Если трейсить trace(gui_interface[0].target_texture); то показывает, что текстура занесена в эту переменную. Как же все таки занести текстуру в приватную переменную, ссылка на которую указана в объекте? Кстати вариант, если вместо target_texture значение переменной будет созданный вектор текстур, который также является приватной переменной, то после
gui_interface[0].target_texture.push(texture); То значение заносится непосредственно в приватную переменную, то есть как надо. Так почему не присваивается к обычной текстуре?

Старый 17.10.2016, 06:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Ну а почему она должна быть не пустой? Ты же не ей значение присваиваешь, а новой переменной target_texture. В итоге ты из переменной target_texture убираешь значение равное твоей texture_bg и присваиваешь туда новое значение. При этом переменную texture_bg ты вообще никак не трогаешь.
Не понятно что ты вообще пытаешься сделать
__________________
Ко мне можно и нужно обращаться на ты)

Старый 17.10.2016, 13:54
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Не понятно что ты вообще пытаешься сделать
Пытаюсь избавиться от кучи лишнего кода. Мне нужно присвоить значение классовой переменной, через массив, указав в нем ссылку на эту переменную и чтобы значение меняло у указанной переменной. Тогда такой вопрос возникает.
Цитата:
ты же не ей значение присваиваешь, а новой переменной target_texture
Возьмем похожий пример
Код AS3:
private var vector_bg:Vector.<Texture> = new Vector.<Texture>;
private var gui_interface:Array = [
{target_texture:vector_bg}
];
 
gui_interface[0].target_texture.push(texture);
Теперь, когда я замеряю length у vector_bg, он показывает не пустое число, а ровно столько, сколько было добавлено в массив через объект target_texture, если я добавляю в массив элемент для новой переменной, то почему элементы добавились в переменную класса, ссылку на которую я указал в target_texture?

Старый 18.10.2016, 08:00
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Потому что в первом случае, ты перезаписываешь значение переменной target_texture на другую ссылку, а во втором, ты его не трогаешь, а берешь массив, который висит на этой ссылке, и добавляешь что-то в него. target_texture так и продолжает ссылаться на этот массив.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 18.10.2016, 13:57
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 5  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Как же тогда все таки через массив присвоить значение классовой переменной? Ибо сейчас тогда остается вариант, что создание объектов будет происходить только по элементам, через target_texture. Или создать специальный метод, где будет происходить присвоение классовым переменным, но тогда будет опять же куча if-ов

Старый 19.10.2016, 05:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Задача непонятна. Объясни подробно что ты хочешь сделать и какой результат получить.
Для чего у тебя вообще этот массив? Ты хочешь рэндомные текстуры рендомным объектам присваивать что ли?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 19.10.2016, 16:58
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 7  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Я не хочу постоянно создавать текстуры из сотен спрайтов, изначально получая ссылку на каждый объект, потом вынесение объекта в битмапдату, потом получение битмапы и уже в конце эту битмапу преобразовывать в текстуру(это если спрайт, а если мувик, еще надо по всем кадрам пробежаться). Даже если это атласы текстур их может быть прилично много. Тут уже несколько действий, а если спрайтов сотня, это получится очень много лишних строк. Другое дело, поместить все ссылки на спрайты/мувики в массив, указать ссылку на классовую переменную, в которой будет хранится текстура, свойственная загруженному объекту. Вместо тысячи строк присвоения, это все гораздо проще сделать через цикл и разок пробежаться по массиву всех объектов. После этой операции все текстуры у меня под рукой и я могу использовать их как угодно, обратившись к заявленной переменной, в которую эта текстура/текстуры были загружены. Хотя наверно будет проще идентифицировать объект в массиве и потом по указанному идентификатору получать текстуры, забив на классовые переменные.

Старый 20.10.2016, 05:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 8  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Если ты используешь Starling, то там уже этот вопрос давно решен. Пользуйся AssetLoader'ом. У него есть метод getTexture, который позволяет получить любую текстуру по имени
__________________
Ко мне можно и нужно обращаться на ты)

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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