Просмотр полной версии : как два класса совместить?
Mnilionic
15.11.2007, 00:53
у меня есть, например, 2 класса на основе мувиклипа, один добовляет события онМаусСтоп, второй онДаблКлик.
По отдельности они замечательно работают.
А как мне породить мувик чтоб он имел в себе эти 2 (3...5...10) метода?
спасибо
undefined
15.11.2007, 01:02
Сделать один класс от MovieClip, в него запихнуть методы добавления обоих событий и названые 2 класса наследовать не от MovieClip, а от его потомка.
А как мне породить мувик чтоб он имел в себе эти 2 (3...5...10) метода?
Соответсвенно новый мувик наследовать от того-же класса.
Mnilionic
15.11.2007, 01:42
чё-то не пашет
mm.as
class mm extends MovieClip{
var onMouseStop:Function;
}
onms.as
import mx.utils.Delegate;
class onms extends mm {
var onMouseStop:Function;
private var interval_onms:Number;
private var onmsListener:Object = new Object();
function onms() {
watch("onMouseStop", Watcher);
}
private function Watcher(prop, oldVal, newVal){
//trace("watched")
if(prop == "onMouseStop"){
onmsListener.onMouseMove = Delegate.create(this, onMoveMouse);
Mouse.addListener(onmsListener);
return newVal;
}
}
private function onStopMouse() {
//trace("stoped")
clearInterval(interval_onms);
if(onMouseStop) onMouseStop();
else Mouse.removeListener(onmsListener);
}
private function onMoveMouse() {
//trace("moving")
clearInterval(interval_onms);
interval_onms = setInterval(Delegate.create(this, onStopMouse), 300);
}
}
на сцене клип-экземпляр mm
mc.onMouseStop = go;
function go(){
trace("done")
}
class AAA {
var __aaa:Function = function(){trace("me AAA!");}
}
class BBB {
var __bbb:Function;
function BBB(){
this.__bbb = AAA.prototype.__aaa;
}
}
var bbb:BBB = new BBB();
bbb.__bbb();
screamge
15.11.2007, 13:40
Полиморфизм (http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_%D0%B2_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0 %BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Делаете цепочку наследования, третий (онДаблКлик) класс наследуется от мувиклипа, второй (онМаусСтоп) от третьего, а общий класс (онДаблКлик, онМаусСтоп) наследуется от второго. В Итоге имеете иерархию из трёх классов в которой общий совмещает в себе два класса.
Mnilionic
15.11.2007, 16:59
screamge, а есть ли возвожность подключать их параллельно?
Тоесть имеется класс main и к нему подключено ещё 5 необходимых классов. И порождый мувик от main имеет все свойства и методы подключённых классов.
wvxvw, так наследуеься только свойство, которое в момент инициализации пустое и как результат - не работает :(
class mm extends MovieClip{
var onMouseStop:Function;
function mm(){
onMouseStop = onms.prototype.onMouseStop;
}
}
Эм... в моем примере ничего не наследуется... просто назначаете внутренней переменной одного класса значение взятое из прототипа другого. А если вопрос, о том возможно ли наследовать в одном классе методы разных - ответ нет. Не в АС2 точно. Лучше изначально придумать структуру так, чтобы не сталкиваться с такими ситуациями. Если честно, то назначение кода в примере не совсем понятно... Чего в итоге нужно сделать?
Кроме того, я как-то плохо себе представляю, как будут вместе уживаться просто 2 объекта такого класса... onmsListener по ходу для всех инстансов этого класса общим будет.
Mnilionic
15.11.2007, 19:24
wvxvw, понятно.
Да вы правы листнеры перекрываюся, я думал у каждого экземплара различные значения свойтв (..
Но в любом случае это был просто тестовый пример - разбираюсь в классах и ищу их применение.
спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.