Flash. Refactoring.

Я программирую в основном на Java. Но вот понадобился Flash. Что я могу сказать по этому поводу…. Flash обзавёлся ноым языком снераиев (последний раз я видел флеш когда была только пятая версия). Этот язык похож на Java, всё при неём: ООП, пакеты….Порадовала обработка XML.

Но, честно сказать, очень тяжело (а если точно сказать лень) изучать что-то похожее. Был бы полным ламаком, учил бы с нуля и знал бы самые простые вещи. Вот и приходиться по форумам лазить.

Это было отступление от темы….. :)

Так вот, на моей карте оказалось уже два таскаемых объекта. Это карта и панель масштаба. Когда пришла очередь миникарты, то я понял, что надо что-то менят. Третий объект, в котором опять од-но и тоже. Вот тут нам и поможет наследование.

Реализовал клас, который позволяет создавать объекты, которые можно таскать в переделах экрана.

Всё просто, берешь и рисуешь мувик, который будет у нас фоном. Единственное требовани : верхнний левый угол этого мувика должен быть в координатах 0,0. Называешь его к примеру Background. Наследуешь его от моего класса. Для этого пишешь примерно такой код.


/**
* Фон Ð´Ð»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸ "
*/

package {

import by.strix.MovedBackground;

public class Background extends MovedBackground {
}
}

После этого ложишь свой BackGround на любой клип на задний план. Вот и всё.

Код моего класса следующий.


/**
* Фон Ð´Ð»Ñ Ð¿Ð°Ð½ÐµÐ»ÐµÐ¹. ÐозволÑÐµÑ Ð¸Ñ Ð´Ð²Ð¸Ð³Ð°ÑÑ Ð² пÑÐµÐ´ÐµÐ»Ð°Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ облаÑÑи
* !!! ÐÐÐÐÐÐÐÐ. ÐÐ»Ñ ÐºÐ¾ÑÑекÑной ÑабоÑÑ Ð½ÐµÐ¾Ð±Ñодимо, ÑÑо Ð±Ñ Ñон наÑиналÑÑ Ñ (0,0)
*/

package by.strix {

import flash.display.MovieClip;
import flash.events.*;
import flash.geom.Rectangle;

public class MovedBackground extends MovieClip {

//private var settings:XML = MovieClip(root).settings.getSettings();

private var _parent:MovieClip = MovieClip(parent);

public function MovedBackground() {


// УÑÑановка обÑабоÑÑиков Ð´Ð»Ñ Ð¿ÐµÑеÑÑгиваниÑ.
addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
stage.addEventListener(Event.MOUSE_LEAVE, handleMouseLeave);


// УÑÑановка обÑбоÑÑиков Ñ ÑодиÑелÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑого ÑвлемÑÑ Ð·Ð°Ð´Ð½Ð¸Ð¼ Ñоном, Ð´Ð»Ñ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ñ.
_parent.addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver);
_parent.addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut);

// пÑогÑаммно ÑÑÑанавливаем в заÑемненное положение
handleMouseOut(null);
}

function handleMouseDown(event:Event):void {
// ХиÑÑое вÑÑмÑление Rect Ð´Ð»Ñ StartDrag ÑвÑзвно ÑÑем, ÑÑо наÑало клипа не в нÑле.
var dx:Number = width-stage.stageWidth + x;
var dy:Number = height-stage.stageHeight + y;
var dragRect:Rectangle = new Rectangle(-dx,-dy, dx-x,dy-y);
//parent.startDrag(false, dragRect);
//startDrag(false, dragRect);*/
MovieClip(parent).startDrag(false, dragRect);
}

function handleMouseUp(event:Event):void {
//parent.stopDrag();
stopDrag();
}

function handleMouseLeave(event:Event=undefined):void {
/*if (root.panel.dragged_mc){
root.panel.handleMouseUp();
}*/
handleMouseUp(event);
}

// Ðаводи мÑÑкÑ
function handleMouseOver(event:Event=undefined):void {
_parent.alpha = 1;
}

// Уводим мÑÑкÑ
function handleMouseOut(event:Event=undefined):void {
_parent.alpha = 0.25;
}
}
}

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s


%d такие блоггеры, как: