Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Массив значений свойств элементов (http://www.flasher.ru/forum/showthread.php?t=128995)

FlashStart 21.08.2009 20:17

Массив значений свойств элементов
 
Создаю массив для хранения значений свойств элементов:
Код AS1/AS2:

var p_control:Array;
p_control = Array(
          controls._x,
        controls._y,
        controls._width,
        controls._height);

При этом в элементы заносятся не значения свойств, а ссылки на эти свойства и соответственно при вызове элемента p_control[0] возвращается не значение свойства _x в момент создания элемента, а текущее значение свойства.

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

udaaff 21.08.2009 20:35

Простые типы по ссылке не передаются. Такого не может быть.

FlashStart 21.08.2009 20:38

Не может быть того, что описал или того, что хочу получить?

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

Код AS1/AS2:

var p_control2:Array;
for (var i=0; i<p_control.length; i++) {
        a = p_control[i];
        p_control2[i] = a;
}


udaaff 21.08.2009 20:52

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

FlashStart 21.08.2009 20:55

Ясно, а в чем может быть проблема в таком случае?
С этой ерундой уже бьюсь 2-ой день, кроме того, что привел пока ничего не придумал.

udaaff 21.08.2009 21:05

Привидите пример кода с проблемой, а то так не скажешь.

mooncar 21.08.2009 21:06

Стоп. Если ваш элемент - мувик (ваш controls), то он уже является массивом своих собственных свойств.
Чем вас не устраивает работать не с массивом, а с самим элементом или ссылкой на него?

NoCD 22.08.2009 01:15

Я как понял, надо сделать свойства мувика фиксированными?
приведу маленький примерчик:

Код 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)


rainbowrussia 23.08.2009 03:32

Возможно код срабатывает в каждом кадре и по-этому свойства всегда актуальные.

FlashStart 24.08.2009 18:35

Цитата:

Стоп. Если ваш элемент - мувик (ваш 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, время: 03:35.

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