Flashbutton mit Programm verlinken?!

MasterofGIGA

Mitglied
HILFE -> Muss ein AS Script umbauen! <-

Hi Tutorials.de Comunity!
Ich weiss nicht weiter!
Ich möchte einen Art Computermanager bauen, über den ich Programme
aufrufen kann... Jetzt sind die Buttons dann das geringere Problem :(
Ich habe hier folgendes Actionscript:
Code:
var dec = 0.9; // Abbremsung

box.onPress = function() {
	this.startDrag(false);
	startWatch();
}

box.onRelease = box.onReleaseOutside = function() {
	this.stopDrag();
	stopWatch();
}

function startWatch() {
	box.lx = box._x;
	box.ly = box._y;
	box.onEnterFrame = function() {
		box.dx = box._x - box.lx;
		box.dy = box._y - box.ly;
		box.lx = box._x;
		box.ly = box._y;
	}
}

function stopWatch() {
	box.onEnterFrame = function() {
		this._x += this.dx;
		this._y += this.dy;
		if (this._x > Stage.width - this._width) {
			this.dx = -Math.abs(this.dx);
			this._x += (Stage.width - this._width) - this._x;
		}
		if (this._x < 0) {
			this.dx = Math.abs(this.dx);
			this._x -= this._x;
		}
		if (this._y > Stage.height - this._height) {
			this.dy = -Math.abs(this.dy);
			this._y += (Stage.height - this._height) - this._y;
		}
		if (this._y < 0) {
			this.dy = Math.abs(this.dy);
			this._y -= this._y;
		}
		this.dx *= dec;
		this.dy *= dec;
	}
}
Ich habe also ein Menü!
Dieses soll (wie beim iPod Touch) sich hin und her (sprich nach oben und
unten) verschieben lassen. Ich habe den Code von einem Drag&Drop Tutorial
genommen, weil ich mich überhaupt nicht auskenne mit Draggen und Droppen...
Also:
Das Menü, ist ca. 1/3 x länger als das Gehäuse des iPod's, da es ja sonst keinen
Sinn gäbe dass so hin und her zu ziehen. Jetzt will ich, dass man das Menü NUR
nach OBEN und nach UNTEN 150pixel aus dem Rahmen herausziehen kann, und dann
eine Barriere da ist, damit es nicht i-wo im nirgendwo verschwindet. Nach rechts und
links soll natürlich kein Spielraum sein, weil sonst würde das bei draggen so rum
schwabbeln.
Jetzt zieht man also das Menü mit der Maus nach oben und unten. In dem moment
in dem man die Maus loslässt rollt das Menü noch etwas weiter und wird dann ab-
gebremst, und, wenn nötig, von der Barriere abprallen und wieder nach unten bzw.
oben rollen (aber nur ein Stück)

HILFE :D
Hier der Link zu dem Projekt:
Link: http://rapidshare.com/files/77241469/iPhone.fla

So long...
Louis

P.S.: Ich weiß dass das im falschen Forum ist aber ich weiß
nicht wo ich das sonst hintun soll da das Programm später mal
auf ner Website sein soll ^^ Wenn es dennoch nicht passt:
Bitte ---------------------------------------------------------> verschieben :)
 
Zuletzt bearbeitet:
Hi,

1. Bitte kein Threadpushing! Es kann durchaus vorkommen, dass ich mal einen Tag nicht im Forum bin.

2. Natürlich kannst Du den Code nicht 1:1 übernehmen, da in der Originalvorlage die Bühnenmaße (und nicht nur ein bestimmter Ausschnitt) maßgeblich für die Begrenzung waren.

Zunächst solltest Du den sichtbaren Bereich des Bildschirms durch ein Objekt gleicher Größe definieren, damit Du per Script auf die entsprechenden Koordinaten Zugriff hast: Ich habe dazu eine Maske (MovieClip: mask) erstellt, die über dem Clip "box" liegt.

Beide Objekte ("box" und "mask") solltest Du nicht mittig, sondern links oben am Registrierungspunkt ausrichten, damit die Positionen eindeutiger berechnet werden können.

Nun musst Du die Punkte (miny und maxy) berechnen, bis zu denen der Inhalt bewegt werden darf: Das ist einmal die vertikale Position des Anzeigebereichs (mask._y) abzüglich der Differenz aus der Höhe von Box und dem Anzeigebereich (box._height - mask._height):
Code:
var miny = mask._y - (box._height - mask._height);
... und zum anderen einfach die vertikale Position des Anzeigebereichs (tiefer darf der Inhalt nicht rutschen):
Code:
var maxy = mask._y;

Diese Positionen solltest Du schon in der startDrag-Methode als Begrenzung angeben:
Code:
this.startDrag(false, this._x, miny, this._x, maxy);

In der Methode "stopWatch", die zum Abprallen dient, müssen die Bühnenmaße durch unsere Begrenzung ersetzt werden (zudem können alle Zeilen, die die horizontale Begrenzung betreffen, entfernt werden):
Code:
function stopWatch() {
	box.onEnterFrame = function() {
		this._y += this.dy;
		if (this._y > maxy) {
			this.dy = -Math.abs(this.dy);
			this._y += (maxy) - this._y;
		}
		if (this._y < miny) {
			this.dy = Math.abs(this.dy);
			this._y -= this._y - miny;
		}
		this.dy *= dec;
	}
}

Im Anhang findest Du eine korrigierte Version.

Gruß
.
 

Anhänge

  • iPhone.zip
    153,6 KB · Aufrufe: 47
Boah!
Du bist der Hammer!
Spitze, danke dir 1000000000x!
Aber wie geht denn das nun mit den Buttons, die ich
auf ein Programm verlinken will? Wäre megageil wenn
du nochmal helfen könntest... (oder vllt wer anderes^^)
Ahja noch was an Tobias Menzel:
Durch die Maske, kann ich ja jetzt praktisch im Film selber
die Buttons anwählen. Ich hab jetzt zum Beispiel eine Uhr
mit reingebaut, die auf Frame 2 liegt. Also habe ich dem
Button "Uhrzeit" die Anweisung:
Code:
 on (Release) {
gotoAndPlay (2);
}
Kann das ganze aber nciht anwählen ;)
Wie umgehe ich das?

Liebe Grüße,

Louis
 
Zuletzt bearbeitet:
Naja Trotzdem ist der Button nicht anwählbar :(
Kann es daran liegen, dass der im MC des Menüs
drinnen ist? Ich verstehe das nicht ganz ^^
Beim anklicken auf das "Symbol" () worauf
die Uhr zu sehen ist, welches ich natürlich in
einen Button konvertiert habe passiert nix :(

So long...
 
Hi,

das dürfte eigentlich nicht sein, es sei denn, Du hast auf der Maske oder dem Container-Clip selbst ein Mausereignis liegen.

poste bitte noch einmal Deine aktuelle .fla.

Gruß
.
 
O.K.
Aber ich denke kaum, dass ich ein Mausereignis auf der Maske liegen habe...
Vielleicht könntest du mir dann auch direkt sagen, wie ich Programme mit
Buttons verlinke und das ganze dann in eine .EXE umwandel.
Danke im vorraus...

So long...

Link
 
? Hast du was herausgefunden ?
Ich hab schon getestet aber nichts rührt sich...
Bitte helf mir nochmal ich möchte das jetzt gerne abschliessen^^

So long...

P.S.: Falls du den Link zu der Datei nicht gefunden hast:
Im vorigem Beitrag ganz uten auf Link klicken^^
 
Hi,

das hätte ich eigentlich selbst sehen müssen: Du hast natürlich auf dem MC "box" ein Mausereignis liegen, welches zum Ziehen (startDrag) dient. Dadurch werden die Mausereignisse in den innenliegenden Buttons überdeckt.

Ändere den Teil des Codes, der die Mausereignisse enthält, so ab:
Code:
var ml = new Object();

ml.onMouseDown = function() {
	if (box.hitTest(_root._xmouse, _root._ymouse, false)) box_onPress();
}

ml.onMouseUp = function() {
	box_onRelease();
}

Mouse.addListener(ml);

box_onPress = function() { // statt box.onPress
	box.startDrag(false, box._x, miny, box._x, maxy);
	startWatch();
}

box_onRelease = function() { // statt box.onRelease
	box.stopDrag();
	stopWatch();
}

Gruß
.
 

Neue Beiträge

Zurück