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

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

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

Регистрация: Nov 2009
Сообщений: 56
По умолчанию Проблема с наследованием свойств класса

Здравствуйте.Может быть я что то не понимаю, но у меня такая проблемма.У меня есть некий базовый класс.И есть некий расширяемый от него класс.Как мне передать значение переменной из базового класса в расширяемый класс?
Код AS3:
package src {
   public class A {
   public var rrr:String;
       public function A() {
          rrr ="Hello world!";
       } 
  }
}
И есть класс наследник
Код AS3:
package src {
   public class B extends A{
 
       public function B() {
         trace(rrr);
       }
 
   }
}
Вобщем мне надо чтобы из класса наследника В было видно значение переменной rrr класса A.Хэлп ми плиз....

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
super()
__________________
Я просто добрый шутник.

Старый 03.03.2010, 19:09
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 3  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
super()???
А если быть точным, то как его применять.Чего то не получается(((

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В коде ошибок нету. И так должно все работать.
super() неявно вызывается.

Старый 03.03.2010, 19:28
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 5  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
у меня есть файл scr.as
Код AS3:
package {
   public class scr  {
   public var rrr:String;
       public function scr() {
          rrr ="Hello world!";
       } 
  }
}
и есть файл scr1.as
Код AS3:
package  {
 
   public class scr1 extends scr{
 
       public function scr1() {
         trace(rrr);
       }
 
   }
}
выдает ошибку
Код:
5000: В класс "scr" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
Почему??????Объясните мне пожалуйста если в коде ошибок нет

Добавлено через 3 минуты
А на счет super() я так понял надо писать
Код AS3:
trace(super(rrr))
Если я не прав, то поправьте меня потому что в хэлпе я примера не нашел.Только это
Код AS3:
 super([arg1, ..., argN])
super.method([arg1, ..., argN])

Старый 03.03.2010, 19:45
dixus вне форума Посмотреть профиль Отправить личное сообщение для dixus Найти все сообщения от dixus
  № 6  
Ответить с цитированием
dixus

Регистрация: Feb 2010
Сообщений: 33
Цитата:
Сообщение от markII Посмотреть сообщение
выдает ошибку
Код:
5000: В класс "scr" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
Почему??????Объясните мне пожалуйста если в коде ошибок нет
Это не очень хороший перевод описания ошибки, по-настоящему The class must subclass 'flash.display.MovieClip' since it is linked to a library symbol of that type. Т.е. scr должен наследоваться от MovieClip, т.к. этот класс в вашей библиотеке экспортируется в качестве мувиклипа. (Кстати, названия классов принято писать с большой буквы.)

Цитата:
Сообщение от markII Посмотреть сообщение
А на счет super() я так понял надо писать
Код AS3:
trace(super(rrr))
super - это обращение к классу-предку, например, если у вашего базового класса конструктор принимает параметры - то надо в конструкторе подкласса вызвать
Код AS3:
super(аргументы конструктора базового класса)
или если вы переопределили в своем классе метод, и нужно вызвать метод предка, то обращение к нему
Код AS3:
super.method()
А super(rrr) выдаст ошибку, т.к. конструктор вашего базового класса не принимает аргументов.


Последний раз редактировалось dixus; 03.03.2010 в 19:48.
Старый 03.03.2010, 20:14
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 7  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
вобщем если кому-то надо то я сделал

файл scr.as
Код AS3:
package {
 
	import flash.display.MovieClip;
	public class scr extends MovieClip {
	public var Str:String;
    public function scr() {
          Str ="Hello world!";		  
       } 
  }
}
файл scr1.as
Код AS3:
package  {
	 public class scr1 extends scr{
		 public var newStr:String;
        public function scr1() {
         	newStr = super.Str;
       	}
   	}
}
файл init.as самый главный
Код AS3:
package {
 
	import flash.display.MovieClip;
 
	public class init extends MovieClip {
 
       public function init() {
		  var ttt:scr = new scr();
		  var rrr:scr1 = new scr1();
		  trace("22222"+ttt.Str);
		  trace("33333"+rrr.newStr);
 
       } 
  }
}
Добавлено через 2 минуты
trace("22222"+ttt.Str);
trace("33333"+rrr.newStr);
это так к примеру

Старый 03.03.2010, 23:27
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от markII Посмотреть сообщение
Здравствуйте.Может быть я что то не понимаю, но у меня такая проблемма.У меня есть некий базовый класс.И есть некий расширяемый от него класс.
Базовый класс можно расширять. Т.о. Ваш базовый класс является "расширяемым", а не его наследник в данном контексте. Тонкая разница, но как меняется смысл фразы. Здесь правильнее сказать "расширяющий".
PS Проблема всегда писалось с одной "м".
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.03.2010, 11:59
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 9  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
Вот еще в чем загвоздка.Подскажите пожалуйста почему вылезает ошибка?
Вот главный класс
Код AS3:
package {
 
	import flash.display.MovieClip;
 
	public class init extends MovieClip {
		public var www:String;
		public function init() {
		   	www = "Hello world!";	
			var ttt:scr = new scr();
       } 
  }
}
И в следующем классе scr мне надо взять переменную www класса init
Код AS3:
package {
	import flash.display.MovieClip;
	public class scr extends init {
	public function scr() {
          trace(super.www);	  
       } 
  }
}
Почему я из класса scr не могу взять переменую www?
Компилятор мне сообщает ошибку
Код:
Error: Error #2136: The SWF file file:///xxxxxxx.swf contains invalid data.
	at init$iinit()

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

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
вот это происходит в Вашем коде : ......new scr() -> new init() -> new scr() -> new init()......
называется "бесконечная рекурсия"


Последний раз редактировалось Elser; 04.03.2010 в 12:29.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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