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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.02.2006, 21:15
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 1  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
По умолчанию Область видимости в классах

Интереует, как быть в такой ситуации. Быть может у меня подход неверный?
Код:
import Checkbox;
import mx.utils.Delegate;

class OptionsWindow extends MovieCLip {
	
	private chk1:CheckBox;
	private chk2:CheckBox;
	
	public function OptionsWIndow() {
		chk1.onPress = Delegate.create(chk1, chek1Pressed);
		chk2.onPress = Delegate.create(chk2, chek2Pressed);

	}
	
	public function chek1Pressed() {
		this.doAction(true);
	}
	
	public function chek2Pressed() {
		this.doAction(false);
	}
	
}
Во-первых, интересует почему нельзя что бы было как сейчас написано private chk1:CheckBox; а должно быть public chk1:CheckBox; ?
Ведь на сколько я знаю, с делегейтом можно к прайват свойствам обращаться.

Второй вопрос: почему ругается компилятор на "doAction" что мол нет такой функции? На самом деле она есть и описана в CheckBox классе. Как быть тут?

Старый 15.02.2006, 22:24
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 2  
Ответить с цитированием
Antares
Banned
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Ответь мне на всего один вопрос: на что указывает this внутри метода check1Pressed?

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

Регистрация: Nov 2005
Сообщений: 149
Насчет подхода не знаю, верный или не верный - все зависит от цели, (плюс я лично никогда не наследую от мувиклипа - намного гибче структура получается), но то что в коде есть ошибки - факт.
1. this в данном случае содержит ссылку на сам экземпляр класса, а не на его объект
Код:
public function chek1Pressed() {
		this.doAction(true);//chk1.doAction(true);
	}
2 а вот в строке
Код:
chk1.onPress = Delegate.create(chk1, chek1Pressed);
как раз и должен быть this, тогда функция и получит ссылку на объект.
3 не буду придираться, но имя класса случайно не это mx.controls.CheckBox
4 не плохо было бы и var перед объявлениями переменных поставить.

Старый 15.02.2006, 23:04
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 4  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
Господа, все равно не допетрю:
Антарес, this указывает на chk1, а doAction это как раз и есть его метод. Вроде все верно.

meiciuc, на сколько я знаю, экземпляр класса == обьект.
3. да, там есть var, писал по памяти код
4. нет, checkBox мой собственный

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

Регистрация: Dec 2003
Сообщений: 3,925
Цитата:
Сообщение от ir73
Антарес, this указывает на chk1, а doAction это как раз и есть его метод. Вроде все верно.
Тогда зачем использовать Delegate? Что вообще делает Delegate?

Старый 15.02.2006, 23:14
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 6  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
делегейт запускает функцию от лица обьекта-первго параметра. В данном случае он для наглядности и тут не нужен. Но ведь с ним одно и тоже что и без него (в моем случае) , я так понимаю?

Старый 15.02.2006, 23:20
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 7  
Ответить с цитированием
Antares
Banned
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Так раз функция исполняется, как ты сказал, "от лица объекта чекбокс", то как же ты хочешь достучаться до private-члена другого класса?

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

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

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


 


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


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