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

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

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
По умолчанию Как правильно использовать getter и setter

Всем привет!
В классе создал мувиклип, прилепил к нему onEnterFrame, но свойства клипа в таком случае не доступны. Как я понял, такие свойства как _x, _y и т.д. нужно получать через get и set. Как правильно обратиться к ним, что бы получить свойства клипа?

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

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

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

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

грубый пример вот:
Код AS1/AS2:
class modegame{
 
public function createmode(){
 
mc = attachMovie("mc","mc",1000)
mc._x = 100;
mc._y = 100;
 
mc.onEnterFrame = engine_mc
}
 
public function engine_mc(){
 
trace(this._x)
 
 
 
}
 
}
Как получить в функции engine_mc у this._x свойство _x или любое другое свойство мувика this ??

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Вопрос простейший. Тока тут геттер и сеттер не причем.

Код AS1/AS2:
class modegame{
 var SMC;
public function createmode(smc){
 SMC = smc; // или smc = SMC; забыл уже если честно
 SMC._x = 100;
 SMC._y = 100;
 
 onEnterFrame = mx.utils.Delegate.create(this,engine_mc);
}
 
public function engine_mc(){
 
trace(SMC._x)
 
 
 
}
 
}
Вариант 2 с твоими сеттирами
Код AS1/AS2:
var someVar;
function setVar(x) {
    someVar._x = x; }
function getVar():Number {
     return someVar._x;
}
setVar(100);
trace(getVar();)


Последний раз редактировалось in4core; 23.03.2010 в 12:16.
Старый 23.03.2010, 12:16
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 5  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Спасибо большое, буду разбираться!
Для вас простейший, а я только начинаю писать в классах

Старый 23.03.2010, 12:17
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Обращайся)

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Вариант 2 с твоими сеттирами
get/set — это несколько другое

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Второй вариант вообще замороченный
думал мое решение на get/set подвязаны, извиняюсь за ошибку.

Первый вариант у меня не получилось реализовать.

Если рассматривать первый вариант, то SMC, мувиклип?

если так, то каким образом он влияет на onEnterFrame?
проверил функцию create_bpost_f на trace(this), выдает объект.
а у объектов нет onEnterFrame.
вот собственно сам код, который я хочу оживить.

Код AS1/AS2:
public function create_bpost_f(container,clip){
 
 
		trace("this= "+this)
        bpost = container.attachMovie("bpost_img","bpost",3900)
        bpost._x = 100;
        bpost._y = 100;
        bpost.container = container;
        bpost.clip = clip;
		trace("container= "+container)
		trace("bpost= "+bpost)
		trace("this._x= "+bpost._x)
 trace("this._y= "+bpost._y)
 
		//bpost.onEnterFrame = bp_engine;	
	bpost.onEnterFrame = mx.utils.Delegate.create(this,bp_engine);
 
	}	
 
public function bp_engine(){
	trace("this= "+this)
	}
container - мувиклип контейнер, который будет содержать созданные в нем мувиклипы

clip - это клип, который будет проверяться с созданным клипом на столкновение.
Почему так? потому чтоя не могу понять, как в классе сделать так, что бы мувиклипы были доступны всем function в текущем классе.

В итоге выдает ошибку.

Почему сам клип в функии bp_engine трайсится, а свойства его не доступны?


Последний раз редактировалось NoCD; 23.03.2010 в 13:55.
Старый 23.03.2010, 14:52
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Удав- несколько другое? Покажи пример раз так. На сколько я помню последний пример про гет и сет как раз я видел в ливдоках. Вот оттуда этот пример ( тока немного модернизированный под нужды человека).

То Автор : Вообще заведомо нехорошо так классы писать. Все отрибуты давать лучше сначала. А потом тока запускать функции с этимт атрибутами. Код я написал тебе правильный. Просто тебе надо подделать его под себя, и подумать насчет Delegate который как раз нужен в твоем случае.

Добавлено через 5 минут
вот простейший пример : а как его использовать в твоих нуждах стоит подумать тебе самому
Код AS1/AS2:
class чепочем { 
      var f;
      function чепочем(set) {
           f = set;
       }
      function получи() {
         return f;
        }
}
var n = new чепочем(333);
trace(n.получи()) // 333
И второй метод уже с делегатом
Код AS1/AS2:
class NNN {
      var f;
      function NNN(set) {
       f = set; 
       setTimeout(mx.utils.Delegate.create(this,DDD),30); 
 }
     function DDD() { trace(f); }  
}
var n = new NNN("555");
// 555


Последний раз редактировалось in4core; 23.03.2010 в 15:00.
Старый 23.03.2010, 15:06
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
import mx.utils.Delegate;
 
class Test
{
 
 	/**
	 * Смысл делегата для NoCD
	 */
	public function Test(mc:MovieClip)
	{
		super();
 
		this.mc = mc;
 
		// тут обработчик будет вызывать в области видимости объекта mc
		this.mc.onEnterFrame = mc_onEnterFrameHandler;
 
		// тут в области видимости текущего объекта. Т.е. экземпляра Test
		this.mc.onEnterFrame = Delegate.create(this, mc_onEnterFrameHandler);
 
		// или что не понятно? 
	}
 
	private var mc:MovieClip;
 
	private function mc_onEnterFrameHandler():Void
	{
		trace(this);
	}
 
 	/**
	 * Пример get/set для in4core
	 */
 	private var _width:Number;
 
 	public function get width():Number
	{
		return _width;
	}
 
	public function set width(value:Number):Void
	{
		if (_width < 0)
			return;
 
		_width = value;
	}
 
}
Цитата:
Сообщение от in4core
Код я написал тебе правильный.
Цитата:
Сообщение от NoCD
а у объектов нет onEnterFrame.

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

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

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


 


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


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