Flash+AS - obiekt śledzący ruchy myszą


(Barthezz) #1

Witam.

Jak we Flashu wykonać oko które będzie śledziło ruchy kursorem?

Na podstawie znalezionych informacji zrobiłem coś takiego:

this.onMouseMove = function () {

followMouse ( this.mc, checkX (), checkY () );

}

checkX = function () {

return _xmouse;

}

checkY = function () {

return _ymouse;

}

followMouse = function ( whichMC:MovieClip, xPOS:Number, yPOS:Number ) {

var type = mx.transitions.easing.Regular.easeOut;

var startX = whichMC._x;

var endX = xPOS;

var startY = whichMC._y;

var endY = yPOS;

var time = 15;

followX = new mx.transitions.Tween( whichMC, "_x", type, startX, endX, time, false );

followY = new mx.transitions.Tween( whichMC, "_y", type, startY, endY, time, false );

}

Tylko chodzi mi o to żeby można było określić po jakiej przestzrni może poruszać się obiekt, np po jakimś MovieClipie


(Marek Ciarkowski) #2

Możesz zrobić coś takiego

this.createEmptyMovieClip("kontener", this.getNextHighestDepth());

kontener.createEmptyMovieClip("maly", 2);

with (kontener.maly) {

	lineStyle(1, 0xCCCCCC);

    beginFill(0xFFFFFF);

    moveTo(150, 150);

    lineTo(180, 150);

    lineTo(180, 180);

    lineTo(150, 180);

    lineTo(150, 150);

    endFill();

}

kontener.createEmptyMovieClip("big", 1);

with (kontener.big) {

    beginFill(0x4827CF);

    moveTo(150, 150);

    lineTo(380, 150);

    lineTo(380, 380);

    lineTo(150, 380);

    lineTo(150, 150);

    endFill();

}

var minus:Number = kontener.maly._width; 

kontener.maly.onPress = function(){

	this.startDrag(0, 0, kontener.big._height-minus, kontener.big._width-minus, 0);

}

kontener.maly.onRelease = function(){

	this.stopDrag();

}

Nie robiłem nigdy czegoś podobnego bo nie czuję potrzeby ale myślę ze to nie wypali bo

  1. możesz dodać addListener na myszkę który sprawiłby się świetnie tylko że przy bardzo szybkim geście myszy bankowo się wysypie i będziesz miał obiekt śledzący poza obiektem którego ma się trzymać.

  2. to samo dotyczy this.onEnterFrame nawet jak ustawisz odświeżanie animacji na 50 kl/s

nie widzę i nie znam lepszego sposobu niż ten który podałem ale idealny też nie jest bo prawdopodobnie czyt.(nie sprawdzałem) nie da się go odnieść do kształtów nieregularnych.


(Barthezz) #3

jednak konieczne jest poruszanie sie po MC.


(Marek Ciarkowski) #4

hehe przecież w tym przykładzie MC o nazwie maly porusza się po MC o nazwie big :slight_smile: a oba zawarte są w Mc o nazwie kontener :mrgreen: