Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
1

Наследование

23.03.2012, 19:47. Просмотров 1125. Ответов 12
Метки нет (Все метки)

Собственно вопрос в следующем:
есть герой, у него есть несколько состояний (stand, walk, die и т.д.) на каждом кадре находится MovieClip, который содержит анимацию своего состояния и он соответсвенно назван stand, walk или die.
затем у нас есть перерисованный герой, который по функциональности выполняет такие же действия, но у его состояний другие картинки, соответственно у него они также названы stand, walk, die. В результате этого мне выдается ошибка:
1152: : A conflict exists with inherited definition heroes:FireMage.attackRightForward in namespace public.
Как это победить ?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2012, 19:47
Ответы с готовыми решениями:

Наследование
Подскажите пожалуйста: есть 2 класса - Bullet и LightBeam LightBeam наследует от Bullet в классе...

Наследование от Main
Почему при наследовании классов от класса Main флеш выдает ошибку "Класс ребенка содержит...

Наследование основных классов
в одних уроках заметил такую последовательность package com.test{ import...

Наследование на основе MovieClip
Добрый вечер, подскажите пожалуйста можно ли создать класс для нескольких movieclip(ов). Есть 8...

Заменить наследование классов на наследование интерфейсов
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int...

12
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
23.03.2012, 22:41 2
Похоже, что ошибка не в наследовании. Покажи код.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
24.03.2012, 09:04  [ТС] 3
Там ошибка в том, что у меня в родителе есть объявленная переменная var explosion:MovieClip, а затем
у меня есть наследник, MovieClip которого лежит в библиотеке и у него в этот MovieClip вставлен ещё один MovieClip, который также назван explosion (потому что по сути родитель должен совершить действия именно над этим объектом). А в итог, как я понял получается то, что Flash начинает ругаться на то, что я как бы пытаюсь переписсать данную переменную

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package bullets
{   
    import flash.display.*;
    import flash.events.*;
    import heroes.*;    
    import flash.utils.Timer;
    
    public dynamic class Mine extends MovieClip
    {   
        protected var explosion:MovieClip;
 
        public function Mine(stageRef:Stage, hero:Hero)
        {
            // бла бла бла
        }
        // и тут методы пошли, которые explosion используют
    }
}
 
package bullets
{
    import flash.display.*;
    import flash.events.Event;
    import heroes.*;        
    
    public class Mine1 extends Mine
    {       
        
        public function Mine1(stageRef:Stage, hero:Hero)
        {
            damage = 40;
            super(stageRef, hero);
        }
    }   
}
Mine1 - симвод из библиотеке в котором есть movieCLip с именем explosion
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
24.03.2012, 12:01 4
Я правильно понял, что имеется 2 класса с одинаковыми именами? Так нельзя. Должны отличаться хотя бы package-ы, но тогда названия классов прописывать необходимо с учетом package.
1
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
24.03.2012, 12:23  [ТС] 5
нет, есть класс Mine, Mine1 и Mine2. Mine1 и Mine2 наследуют от Mine.
Mine1 и Mine2 имеют в библиотеке свои moveiClip
В данных MovieClipах на временной шкале вставлен ещё 1 мувиклип (и в Mine1, и в Mine2), которому здесь же (там где name of instance) дано имя explosion. Т.е. я могу обращаться в классе Mine1 и Mine2 к мувиклипу с именем explosion (explosion.play()).
В классе Mine я хочу описать общее поведение для explosion Из Mine1 и Mine2. Т.е. что-то типо:
ActionScript 3
1
if hitTestObject(monster) explosion.play();
Соответственно это должны унаследовать Mine1 и Mine2. Но проблема в том, что мне приходится в родительском классе прописывать
ActionScript 3
1
protected var explosion:MovieClip
чтобы он знал что такое explosion вообще, но в связи с этим он мне выдает данную ошибку, походу связанную с тем, что он думает, что я хочу не присвоить переменной explosion мувиклипы из Mine1 и Mine2 с аналогичными именами, а пересоздать данную переменную.

P.S. Я не знаю, как понятнее объяснить))
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
24.03.2012, 15:34 6
Цитата Сообщение от Theoryofgames Посмотреть сообщение
Я не знаю, как понятнее объяснить
Покажи минимальный пример, иллюстрирующий проблему.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.03.2012, 00:13  [ТС] 7
Первая ошибка - как раз, что я имею ввиду
0
Вложения
Тип файла: rar Test.rar (8.1 Кб, 8 просмотров)
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
25.03.2012, 00:18 8
Есть 2 группы классов с одинаковыми названиями: одни - as-файлы, другие - те, что созданы непосредственно во флеше. Вот и конфликт.
1
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.03.2012, 00:26  [ТС] 9
Цитата Сообщение от TanaTiX Посмотреть сообщение
Есть 2 группы классов с одинаковыми названиями: одни - as-файлы, другие - те, что созданы непосредственно во флеше. Вот и конфликт.
Здесь я не понял... По сути они же не конфликтовать, а дополнять друг друга должны. Как в данной ситуации сделать так, чтобы данный пример работал? Просто у меня сейчас убрано наследование и получается, что один и тот же код тупо закопипастен в 2 места, что естественно неправильно.
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
25.03.2012, 01:54 10
Странная структура, рекомендую пересмотреть.
Вот пример того, что наверное задумывалось
Test.rar
1
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.03.2012, 09:25  [ТС] 11
Цитата Сообщение от TanaTiX Посмотреть сообщение
Вот пример того, что наверное задумывалось
Да, но в этом случае Smth1 и Smth2 не будут выполнять метод loop, который они должны наследовать их Smth. По сути задумывалось описать все в Smth, а в Smth1 и Smth2 менять просто 1 параметр (например урон от взрыва).
Единственный вариант, который мне приходит в голову - это собирать explosion в Smth1 и Smth2 с помощью кода AS (explosion = new Circle() и explosion = new Rect() ), но это лишний геморой, потому что по задумке в Smth1 и Smth2 используются разные символы взрыва.
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
25.03.2012, 11:42 12
Цитата Сообщение от Theoryofgames Посмотреть сообщение
Да, но в этом случае Smth1 и Smth2 не будут выполнять метод loop, который они должны наследовать их Smth.
Не будут. Но этот метод будут выполнять "над ними". Во флеше нет множественного наследования, когда из 2х разных классов собирается один. Его реализация в некоем роде доступна через интерфейсы.
Цитата Сообщение от Theoryofgames Посмотреть сообщение
По сути задумывалось описать все в Smth
А в моем примере не так? Только при изменении к.-л. свойств мы обращаемся не к this, а к _mc.
1
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
25.03.2012, 12:06  [ТС] 13
Я не то сначала открыл просто, спасибо.
0
25.03.2012, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 12:06

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна...

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование...

Наследование С# , наследование полей
В классе есть приватное ПОЛЕ . Мне нужно использовать его в классе потомке . Можно это не сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru