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

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

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

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

У меня есть класс myMC, наследованный от класса MC. в myMC есть объект типа MovieClip с именем myMCObj, созданный вручную, без кода. Для myMC в as-файле написан код:
Код AS3:
...
public class myMC extends MC
{
  public function myMC() 
    {
      myMCObj.rotation = 30;
     }
}
...
Но ролик не запускается, выдается ошибка
Цитата:
1120: Access of undefined property myMCObj.
Как мне обратиться к myMCObj?

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS3:
public class MC extends MovieClip
{
 
    public function MC()
    {
        super();
 
        myMCObj = MovieClip(getChildByName("__myMCObj"));
    }
 
    protected var myMCObj:MovieClip;
 
}
 
public class MyMC extends MC
{
 
    public function MyMC()
    {
        super();
 
        myMCObj.rotation = 30;
    }
 
}
Если ничего не напутал...

ps: Названия классов принято с большой буквы писать.


Последний раз редактировалось udaaff; 20.02.2010 в 19:59.
Старый 03.03.2010, 14:19
Elser вне форума Посмотреть профиль Отправить личное сообщение для Elser Найти все сообщения от Elser
  № 3  
Ответить с цитированием
Elser
 
Аватар для Elser

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
По умолчанию а с этим как быть?

всё бы было заметчтательно если бы не такая бяка:
Код AS3:
package com.elser.labsandtests { 
import flash.display.MovieClip;
 
public class MC extends MovieClip {
 
   public function MC() {
      super();
   }
 
}}
 
package com.elser.labsandtests {  
import flash.display.MovieClip;
import org.elser.labsandtests.MC;
 
public class MyMC extends MC {
 
   private var myMCObj:MovieClip;
 
   public function MyMC() {
      super();
      myMCObj = MovieClip(getChildByName("__myMCObj"));
      trace(myMCObj); // null 
   }
 
}}
как с этим то бороться?

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
А что такое "__myMCObj"?

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
уберите галку "Automatically declare stage instances" и декларируйте все DisplayObjects вручную
Изображения
 
__________________
Flash Developer
Папа TDP4 Team Battle

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

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
Цитата:
уберите галку "Automatically declare stage instances" и декларируйте все DisplayObjects вручную
я вкурсе про галку - всеравно не работает
Цитата:
А что такое "__myMCObj"?
в либе мувик MyMC, которому в связывание прописан класс com.elser.labsandtests.MyMC и который содержит чайлда __myMCObj, засунутого в него в IDE. инстанс мувика положен в IDE на стейдж

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
я и не писал, что должно заработать...просто это совет на будущее
__________________
Flash Developer
Папа TDP4 Team Battle

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

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
Поддерживаю CrazyFlasher`a - авто объявление инстансов на стейдже чаще всего зло - сам всегда снимаю, но суть вопроса не в этом - почему наследник мовиклипа запросто обращается к таким чайлдам а наследник наследника мовиклипа их не видит???


Последний раз редактировалось Elser; 03.03.2010 в 16:16.
Старый 03.03.2010, 18:18
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Должен всё видеть. Что у вас там за импорт какой-то странный во втором классе?
import org.elser.labsandtests.MC;

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

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
По умолчанию сори за неточность

извиняюсь, первый код заработал после рестарта флеша
но проблема обнаружилась вот где:
Код AS3:
package com.elser.labsandtests { 
import flash.display.MovieClip;
 
public class MC extends MovieClip {
 
   private var one:Object;
   private var two:Object;
   public   var current:Object;
 
   public function MC(o:Object, t:Object) {
      super();
      one = o;         // вот если эти строки 
      two = t;         // закоментить и убрать аргументы у конструктора,
      current = one; // то работает, а с ними нет
   }
 
}}
Код AS3:
package com.elser.labsandtests {  
import flash.display.MovieClip;
import org.elser.labsandtests.MC;
 
public class MyMC extends MC {
 
   private var stateOne:MovieClip;
   private var stateTwo:MovieClip;
 
   public function MyMC() {
      // super() // вот только если он тут в рабочем варианте  все ок (см. комент в предке)
      stateOne = MovieClip(getChildByName("oneState"));
      stateTwo = MovieClip(getChildByName("twoState"));
      trace(stateOne+", "+stateTwo+", "+numChilds); // null, null, 2 
                          // причем их имена в getChildByName правильные (копипаст)
      super(stateOne, stateTwo); 
                             //а надо сделать так, чтобы каждый потомок зарегил свойства,
                             //которые контролируются обобщенным кодом предка.
      trace(current);
   }
 
}}


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

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

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


 


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


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