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

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

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

Регистрация: Apr 2009
Сообщений: 87
Question Ошибка default contructor!

Вот скриншот



У меня на первом кадре в .fla файле следующий код создающий экземпляры классы Car и Truck:

Код AS3:
var compact:Car = new Car(1, 200);
addChild(compact);
compact.go();
 
var pickup:Truck = new Truck(1, 200);
addChild(pickup);
pickup.go();
далее в той же директории есть файл .as базового класска Vehicle:

Vehicle.as:

Код AS3:
package {
 
     import flash.display.MovieClip;
	 import flash.events.Event;
 
	 public class Vehicle extends MovieClip {
 
	     public var _gasMileage:Number;
		 public var _fuelAvailable:Number;
		 public var _milesTraveled:Number = 0;
		 public var _go:Boolean;
 
	     public function Vehicle(mpg:Number, fuel:Number) {
 
		     _gasMileage = mpg;
			 _fuelAvailable = fuel;
			 trace("Source value mpg = "+mpg);
			 trace("Source value fuel = "+fuel);
			 this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
 
 
		 }
 
		 public function onLoop(evt:Event):void {
 
		     if(_go) {
 
			     _fuelAvailable--;
				 _milesTraveled += _gasMileage;
 
				 if(_fuelAvailable < 1) {
 
				     this.removeEventListener(Event.ENTER_FRAME, onLoop);
 
				 }
 
				 trace(this, _milesTraveled, _fuelAvailable);
				 this.x = _milesTraveled;
 
			 }
 
		 }
 
		 public function go():void {
 
		     _go = true;
 
		 }
 
	 }
 
}
далее (в той директории) есть 2 класса Car и Truck которые расширяют базовый Vehicle:

Car.as:

Код AS3:
package {
 
     import flash.display.MovieClip;
	 import flash.events.Event;
 
	 public class Car extends Vehicle {
 
	     public function Car(mpg:Number, fuel:Number) {
 
		     _gasMileage = mpg;
			 _fuelAvailable = fuel;
 
		 }
 
	 }
 
}
и Truck.as:

Код AS3:
package {
 
     import flash.display.MovieClip;
	 import flash.events.Event;
 
	 public class Truck extends Vehicle {
 
	     public function Truck(mpg:Number, fuel:Number) {
 
		     _gasMileage = mpg;
			 _fuelAvailable = fuel;
 
		 }
 
	 }
 
}
На самом деле пока в Car и Truck не заносил ничего нового ибо возникает ошибка флеша при компиляции которая на скриншоте, хмм, странно пример делал по книжке и тем не менее не могу понять почему классы Car и Truck не могут найти базовый конструктор класса Vehicle, помогите плз!

Старый 05.04.2010, 14:14
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
зачем делать
Код AS3:
_gasMileage = mpg;_fuelAvailable = fuel;
в наследниках, если этим у вас занимается базовый класс? замените лучше эти куски на явный вызов конструктора базового класса и проверьте будут ли ошибки:
Код AS3:
super(mpg, fuel);

Старый 05.04.2010, 14:39
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 3  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Э! Вам ж не русским языком пишет флеш конструктор по умолчанию, ну так поставте умолчания
Код AS3:
 public function Car(mpg:Number = 0, fuel:Number = 0) {
__________________
Гоночка

Старый 05.04.2010, 14:44
TonKhaO вне форума Посмотреть профиль Отправить личное сообщение для TonKhaO Найти все сообщения от TonKhaO
  № 4  
Ответить с цитированием
TonKhaO

Регистрация: Apr 2009
Сообщений: 87
Цитата:
Сообщение от Juice_Green Посмотреть сообщение
зачем делать
Код AS3:
_gasMileage = mpg;_fuelAvailable = fuel;
в наследниках, если этим у вас занимается базовый класс? замените лучше эти куски на явный вызов конструктора базового класса и проверьте будут ли ошибки:
Код AS3:
super(mpg, fuel);
ну передавать через дополнительный параметр ведь никто не запрещал, да и его можно обозвать короче,а _gasMileage уже как свойство

насчет явног вызова конструктора базового класса честно не понял, приведите пример плз! но так с ходу сразу вопрос зачем вызывать конструктор базового класса ибо принцип наследования как то теряется

Старый 05.04.2010, 14:47
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
Сообщение от TonKhaO Посмотреть сообщение
плз! но так с ходу сразу вопрос зачем вызывать конструктор базового класса ибо принцип наследования как то теряется
Эт так флеш устроен, всегда в наследнике можно вызвать суперкласс через свойство super
__________________
Гоночка

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

Регистрация: Apr 2009
Сообщений: 87
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
Э! Вам ж не русским языком пишет флеш конструктор по умолчанию, ну так поставте умолчания
Код AS3:
 public function Car(mpg:Number = 0, fuel:Number = 0) {
аааааа, вот что имелось ввиду, господи да я сам убрал это оттуда, думал это ошибка в книжке ))) то есть нужно всегда давать дефолтные значение в базовом классе?

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

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

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


 


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


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