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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Mar 2007
Адрес: Санкт-Петербург
Сообщений: 12
Отправить сообщение для FlashStart с помощью ICQ
Question Массив значений свойств элементов

Создаю массив для хранения значений свойств элементов:
Код AS1/AS2:
var p_control:Array;
p_control = Array(
  	controls._x,
	controls._y,
	controls._width,
	controls._height);
При этом в элементы заносятся не значения свойств, а ссылки на эти свойства и соответственно при вызове элемента p_control[0] возвращается не значение свойства _x в момент создания элемента, а текущее значение свойства.

Можно ли как-то сделать подобный массив, чтобы сохранялись именно значения свойств?

Старый 21.08.2009, 20:35
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Простые типы по ссылке не передаются. Такого не может быть.

Старый 21.08.2009, 20:38
FlashStart вне форума Посмотреть профиль Отправить личное сообщение для FlashStart Найти все сообщения от FlashStart
  № 3  
Ответить с цитированием
FlashStart

Регистрация: Mar 2007
Адрес: Санкт-Петербург
Сообщений: 12
Отправить сообщение для FlashStart с помощью ICQ
Не может быть того, что описал или того, что хочу получить?

Нашел решение, может и не очень красивое, но работает:

Код AS1/AS2:
var p_control2:Array;
for (var i=0; i<p_control.length; i++) {
	a = p_control[i];
	p_control2[i] = a;
}


Последний раз редактировалось FlashStart; 21.08.2009 в 20:43.
Старый 21.08.2009, 20:52
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Того, что привели в примере. В массив заносяться значения свойств объекта. По ссылке они никак передаться не могут, так как являются простыми типами.


Последний раз редактировалось udaaff; 21.08.2009 в 20:55.
Старый 21.08.2009, 20:55
FlashStart вне форума Посмотреть профиль Отправить личное сообщение для FlashStart Найти все сообщения от FlashStart
  № 5  
Ответить с цитированием
FlashStart

Регистрация: Mar 2007
Адрес: Санкт-Петербург
Сообщений: 12
Отправить сообщение для FlashStart с помощью ICQ
Ясно, а в чем может быть проблема в таком случае?
С этой ерундой уже бьюсь 2-ой день, кроме того, что привел пока ничего не придумал.

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Привидите пример кода с проблемой, а то так не скажешь.

Старый 21.08.2009, 21:06
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Стоп. Если ваш элемент - мувик (ваш controls), то он уже является массивом своих собственных свойств.
Чем вас не устраивает работать не с массивом, а с самим элементом или ссылкой на него?

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Я как понял, надо сделать свойства мувика фиксированными?
приведу маленький примерчик:

Код AS1/AS2:
game = new Object();
 
 
var name = "p_control"+1
 
game[name] = {name:name,x:controls._x,y:controls._y,width:controls._width,height:controls._height}
 
trace(game[name].x)

Старый 23.08.2009, 03:32
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 9  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Возможно код срабатывает в каждом кадре и по-этому свойства всегда актуальные.

Старый 24.08.2009, 18:35
FlashStart вне форума Посмотреть профиль Отправить личное сообщение для FlashStart Найти все сообщения от FlashStart
  № 10  
Ответить с цитированием
FlashStart

Регистрация: Mar 2007
Адрес: Санкт-Петербург
Сообщений: 12
Отправить сообщение для FlashStart с помощью ICQ
Цитата:
Стоп. Если ваш элемент - мувик (ваш controls), то он уже является массивом своих собственных свойств.
Чем вас не устраивает работать не с массивом, а с самим элементом или ссылкой на него?
В моем случае, как сказал NoCD нужно зафиксировать параметры элементов мувика. Что бы дальше от них проводить расчеты изменения размеров после изменения размеров объекта Flash-плеера на странице.

Цитата:
Привидите пример кода с проблемой, а то так не скажешь.
Код AS1/AS2:
var p_control:Array;
p_control = Array(
  	controls._x, //0
	controls._y,
	controls._width);
function resize_1() {
	controls._width = player_width;
	controls._x = (450 - player_width)/2;
	controls._y = (player_height - 34) - (player_height - 350)/2;
}
После вызова функции resize_1(), получая значение, к примеру, элемента p_control[2]:
Код AS1/AS2:
w = p_control[2];
В переменную заносится текущее значение ширины элемента, а не значение, которое было до изменения размеров.
Цитата:
Возможно код срабатывает в каждом кадре и по-этому свойства всегда актуальные.
Во флешке всего 1 кадр.

В принципе, с проблемой уже справился. Всем спасибо за помощь.

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

Теги
массив , свойства элементов

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

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


 


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


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