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

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

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

Регистрация: Jun 2010
Сообщений: 189
По умолчанию Различные значения переменной класса в его объектах

Привет. Вопрос скорее из ООП, наверное.
Есть класс Kaufer (Мувиклип). У него переменная
Код AS1/AS2:
public var ziziele:Array;
В разное время вывожу на сцену экземпляры этого класса
Код AS1/AS2:
var kaufer:Kaufer = new Kaufer();
и вычисляю для них для всех разные kaufer.ziziele.
Но получаю изменение во всех одновременно. В то же время имеют же они, например, разные x и y, которые считаются отдельно для каждого kaufer.
Явно подозреваю, что дело в паблик, приват и прочих ООП, но из.за недостатка образования...
Итак, что делать, чтобы kaufer.ziziele было разным для разных kaufer?

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код AS3:
// Main.as
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import Kaufer;
	/**
	 * @author bav
	 */
	public class Main extends Sprite 
	{
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(e:Event = null):void 
		{
			var k1:Kaufer = new Kaufer();
			var k2:Kaufer = new Kaufer();
 
			k1.ziziele = [1, 2];
			k2.ziziele = [3, 4];
 
			trace(k1.ziziele); // 1,2
			trace(k2.ziziele); // 3,4
		}
	}
}
 
// Kaufer.as
package  
{
	import flash.display.MovieClip;
	public class Kaufer extends MovieClip
	{
		public var ziziele:Array;
		public function Kaufer() { }
	}
}
Покажите, как вы вычисляете для них для всех разные kaufer.ziziele.


Последний раз редактировалось bav; 12.11.2010 в 01:57.
Старый 12.11.2010, 02:18
Nemez вне форума Посмотреть профиль Отправить личное сообщение для Nemez Найти все сообщения от Nemez
  № 3  
Ответить с цитированием
Nemez
 
Аватар для Nemez

Регистрация: Jun 2010
Сообщений: 189
Так понятно. Но по условию задачи у меня все экземпляры имеют одно имя.
Код AS1/AS2:
public function kauferLoss():void
{
var kaufer:Kaufer = new Kaufer();
kaufer.x = 550;
kaufer.y = 100;
addChild(kaufer);								  
kaufer.addEventListener(Event.ENTER_FRAME, bewegung);
}
А дальше они бегают по-отдельности по своим законам.
Я могу, конечно, создать массив, засунуть их туда и сделать, как у Вас, но возможен ли путь с одним именем?

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Нет, экземпляры должны различаться по именам. Как же иначе программа поймет свойства какого именно экземпляра вы хотите изменить? Если у нас есть десять Ванек, и крикнуть "Ванька!", наверняка обернутся все разом.
Ну и да, можно сделать примерно следующее, чтобы обращаться затем к экземплярам через индексы массива.
Код AS3:
var ivanContainer:Array = [];
for (var i:int = 0; i < 10; i++)
{
    ivanContainer.push(new Ivan());
}

Старый 12.11.2010, 12:11
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 5  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
вы не путайте имя с ссылкой на объект

по поводу свойства - вы передаете в каждый новый мувик ссылку на один и тот же массив, скорее всего и меняете его значения. передавайте ссылки для каждого мувика на свой массив.

примерно так:

Код AS3:
var kaufer:Kaufer = new Kaufer();
kaufer.x = 550;
kaufer.y = 100;
kaufer.ziziele = [Math.random()];
addChild(kaufer);								  
kaufer.addEventListener(Event.ENTER_FRAME, bewegung);
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью


Последний раз редактировалось cleptoman; 12.11.2010 в 12:13.
Старый 12.11.2010, 13:02
Nemez вне форума Посмотреть профиль Отправить личное сообщение для Nemez Найти все сообщения от Nemez
  № 6  
Ответить с цитированием
Nemez
 
Аватар для Nemez

Регистрация: Jun 2010
Сообщений: 189
Цитата:
вы не путайте имя с ссылкой на объект
Вот и я про то говорю.
Итак, если мы вставляем в текст много раз
Код AS1/AS2:
var kaufer:Kaufer = new Kaufer();
через ТимерЕвент, допустим, и каждому пишем
Цитата:
kaufer.ziziele = [Math.random()];
, то будут ли они (kaufer.ziziele ) разными?

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
ничто не мешает проверить )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

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

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


 


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


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