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

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

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

Регистрация: Dec 2005
Сообщений: 7
По умолчанию пользовательские классы в AS2

Пожалуйста, дайте ссылочек на статьи о создании пользовательских классов в AS2, и вообще как они там работают?
Реально ли сделать чтоб MovieClip наследовал класс или нужно создавать его экземпляр(класса) и пользоваться методами, передающими (в параметрах) сам клип? (надеюсь кто-нибудь понял )
Задача: есть несколько клипов с различным графическим содержанием, но двужутся они практически одинаково.
Хочу: написала класс, определяющий основные правила их движение по полю, хочу чтоб они его наследовали, каждый со своими прибавками, включающие в себя обработчики событий (внутри обработчиков должны использоватся методы класса-родителя).
Буду бесконечно благодарна, любому совету!!! любой ссылке!!!

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

Регистрация: Dec 2005
Сообщений: 7
Или почему внутри обработчика "не видно" функции этого же класса, например,
class ball {
private var old_x, old_y:Number;
private var St:Array;
public function CoordinateToCollRow(){
.....}
public function clip_move(clip:MovieClip):Void {
var left:Number = clip._parent.left;
..........
clip.onPress = function() {

this.swapDepths(this._parent.getNextHighestDepth());
this.startDrag(false, left, top, right, bottom);
.....
как внутри этого .onPress использовать функции из этого класса????
например, CoordinateToCollRow???
(this - меняется, свои фкц не видит)
}; }

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

Регистрация: Mar 2004
Адрес: Областной центр "sump"
Сообщений: 202
Отправить сообщение для s_u_m_p с помощью ICQ
маленький пример:

Код:
class MovieUtils {
	public static function applyClassTo (movie:MovieClip, Class:Function):Boolean {
		if ((movie = MovieClip (movie)) != null) {
			movie.__proto__ = Class.prototype;
			movie.constructor = Class;
			movie.constructor.apply (movie);
			return true;
		} // end if
		return false;
	}
	
	public static function createEmptyClassMovie (Class:Function, parent:MovieClip, name:String, depth:Number):MovieClip {
		var mc:MovieClip = null;
		if (MovieClip (parent) != null) {
			mc = parent.createEmptyMovieClip (name, depth);
			return (applyClassTo (mc, Class)) ? mc : null;
		} // end if
		
		return mc;
	}

class Factory {
	private var __target:MovieClip = null;
	public function Factory (target:MovieClip){
		__target = target;
	}
	public function build ():Void {
		for (var i:Number = 0; i < 4; i++) {
			
			var mc:CustomMovie = CustomMovie (
				MovieUtils.createEmptyClassMovie (CustomMovie, __target, 'item' + i, i));
			
			mc._x = 105 * i;
			mc._y = 0;
		} // end if
	}
}

class CustomMovie extends MovieClip {
	public function CustomMovie () {
		beginFill (0x000000, 100);
		moveTo (0, 0);
		lineTo (100, 0);
		lineTo (100, 100);
		lineTo (0, 100);
		lineTo (0, 0);
		endFill ();
		
		onRollOut ();
	}
	
	public function onRollOver ():Void {
		_alpha = 20;
	}
	
	public function onRollOut ():Void {
		_alpha = 100;
	}
}
}
использование
Код:
(new Factory (this)).build ();
__________________
:::::::::::: sump ::::::::::::

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

Регистрация: Dec 2005
Сообщений: 7
сформулирую проблему конкретнее:
class Ball extends Sphere{
private clip:MovieClip=null;
.....
public function Ball(){}
public function someFun(){
trace(this);}
....
public function MyProblem(outclip){
this.clip=outclip;
clip.onPress=function(){
someFun(); //в неё даже не заходит, не видит (((((
}
clip.onEnterFrame(){
this.someFun(); //здесь тоже самое
}
}

}
//в _root
var ball:Ball=new Ball();
// в неком клипе из моей библиотеки потом из него attach`уются еще несколько клипов!
_root.ball.MyProblem(this);
если обработчики clip вне этой функции(MyProblem), выдает ошибку неразрешимая в классе формулировка (не могу же я еще и MovieClip наследовать)! плиз, подскажите, кто знает как сделать это?
[This statement is not permitted in a class definition. clip.onRelease = function() { ]
примечание, все функция наследованные в этих обработчиках clip`а тоже не видны!

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

Регистрация: Mar 2004
Адрес: Областной центр "sump"
Сообщений: 202
Отправить сообщение для s_u_m_p с помощью ICQ
Естественно не увидит он someFun ();

import mx.utils.Delegate;
попробуй clip.onPress = Delegate.create (this, someFun);
__________________
:::::::::::: sump ::::::::::::

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

Регистрация: Dec 2005
Сообщений: 7
запугали ребёнка Delegate`ми всякими, а надо было ссылку на this сохранить до входа в обработчик (((,
типа var o=this;
clip.onPress=function() {o.someFun();} и заработало как надо )))
всё равно спасибо огромное!!!

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

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

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


 


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


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