PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige Einsteigerfragen...


Marquoi
16.02.2011, 23:44
Hallo zusammen,

ich bin neu in der Flash-Entwicklung, habe schon ein wenig herumprobiert mit einigen Tutorials, und ein kleines Spiel entwickelt. Ich habe Programmiererfahrung mit Java, C# und PHP und finde mich schon ganz okay zurecht. Jetzt stehe ich vor einer neuen Aufgabe. Ich mache ein Praktikum und soll nun eine App für Android und iOS programmieren und möchte dafür Flash benutzen und es dann per Adobe AIR auf den Geräten laufen lassen.

Die App wird im Prinzip eine kleine Community in App-Form, d.h. sie hat mehrere Seiten, Funktionen, usw... es geht hier ganz generell um den Aufbau, wie man sowas mit Flash CS5 und AS3 am elegantesten macht.

Ich habe im Moment meinen LogIn-Screen in Frame 1, alle Objekte über die Flash Umbegung platziert und den Instanzen Namen gegeben. Ich habe zunächst einen Layer für die Actions verwendet und dann im Action-Fenster einfach den Code eingegeben, jedoch möchte ich davon abrücken und Eclipse für die Programmierung nutzen. Also habe ich eine Main-Klasse erstellt. In Frame 1 liegt der LogIn-Bildschirm und ich kann über die Main-Klasse alles gut erreichen. Ich habe zwei Buttons, die bei Touch-Berührung die Farbe wechseln, und die bei "Klick" (also im Touchfall das hochheben des Fingers während er auf dem Button verweilt) in einen anderen Frame springen. Alles kein Problem.

In Frame 70 (denn im Login-Bilschschirm wird eine kleine Animation bis Frame 69 abgespielt) liegt die Registrierung für die User, die sie über einen Button in Frame 1 erreichen.

Alles schön und gut. Problem: Ich habe in Frame 70 nun auch einen Button, den ich ansprechen muss, der ist aber bei der Ausführung des Codes noch "null", und wird erst in Frame 70 geladen. Wie kann ich das am besten erreichen? Kann ich Klassen für die verschiedenen Frames erstellen? Oder muss ich eine plumpe Abfrage in einer Update-Schleife einbauen, in welchem Frame ich bin und dann den Code da einfügen? Da ich nie sowas in Flash gemacht habe, weiß ich nicht, ob ich auf einem guten Wege bin.

Hier ist mal mein bisheriger Quelltext der Klasse Main:


package {

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
import flash.utils.Dictionary;

public class Main extends MovieClip {

// Variables
var frameDict:Dictionary = new Dictionary();
var btnBackgrounds:Dictionary = new Dictionary();


// Consctructor
public function Main() {

// Select Frames for different pages
frameDict[regUserBtn] = 70; // Register new user
frameDict[regOrgBtn] = 70; // Register new organisation
//frameDict[sndUserRegBtn] = 1;

// Match Btns with their background objects
btnBackgrounds[regUserBtn] = regUserBack;
btnBackgrounds[regOrgBtn] = regOrgBack;
//btnBackgrounds[sndUserRegBtn] = sndUserRegBack;

// Breathe life into buttons
for (var currentBtn:Object in frameDict) {
currentBtn.addEventListener(MouseEvent.MOUSE_OVER,touched);
currentBtn.addEventListener(MouseEvent.MOUSE_OUT,released);
currentBtn.addEventListener(MouseEvent.MOUSE_UP,goToFrame);
}

}

// Methods
function touched(e:MouseEvent) {
var colorize:ColorTransform = new ColorTransform();
colorize.color = 0xa1c8d2;

var background:MovieClip;
background = btnBackgrounds[e.currentTarget];
background.transform.colorTransform = colorize;
}

function released(e:MouseEvent) {
var colorize:ColorTransform = new ColorTransform();
colorize.color = 0x000000;

var background:MovieClip;
background = btnBackgrounds[e.currentTarget];
background.transform.colorTransform = colorize;
}

function goToFrame(e:MouseEvent) {
gotoAndStop(frameDict[e.currentTarget]);
}


}


}


Die Zeilen, die den betroffenen Button ansprechen habe in eingerückt und auskommentiert.

Ich hoffe, mir kann jemand weiterhelfen... :mauer: