Я очень новичок во флэш-памяти и ActionScript 3. Я много об этом читал, и это также мой первый подход к объектно-ориентированному программированию.
Пока что я создал приложение с кнопкой входа, вот и все. Тем не менее, я хотел бы знать, что я делаю неправильно или должен делать по-другому (или лучше). Я использую Adobe Flex Builder 3.
Основной файл сценария действий - Client2.as:
.
package
{
//import required libraries
import flash.display.Sprite;
//set project properties
[SWF(width="800", height="600", frameRate="31", backgroundColor="#C0C0C0")]
//launch main class
public class Client2 extends Sprite
{
public function Client2() { //the constructor
trace("Client launched.");
var loginGui:LoginInterface = new LoginInterface(); //load the login interface object
loginGui.init(); //initialize the login interface (load it)
addChild(loginGui); //add login gui to the display tree
}
}
}
Это загрузка объекта интерфейса входа. Это хорошо, и правильно ли я это делаю?
Тогда есть файл класса LoginInterface.as:
package
{
//import required libraries
import flash.display.Sprite;
//the LoginInterface class
public class LoginInterface extends Sprite
{
public function LoginInterface() //the constructor
{
trace("LoginInterface object loaded.");
}
public function init():void //initialize the login interface (load it)
{
trace("LoginInterface init method was called.");
var loginButton:CustomButton = new CustomButton(300, 300, 100, 30, 3, 18, "Login!"); //create a new custom button
addChild(loginButton); //add the custom button to the display tree
}
}
}
А как насчет этого? Любые комментарии? Чтобы упростить создание простых кнопок, я создал еще один файл класса с именем CustomButton.as ->
package
{
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
public class CustomButton extends Sprite
{
public function CustomButton(xLoc:int, yLoc:int, width:int, height:int, iLabelOffset:int, fontsize:uint, label:String)
{
//create new simple button instance
var myButton:SimpleButton = new SimpleButton();
//create the look of the states
var normal:Sprite = new Sprite();
normal.graphics.lineStyle(1, 0x000000);
normal.graphics.beginFill(0x6D7B8D);
normal.graphics.drawRect(xLoc, yLoc, width, height);
//the mouseover sprite
var over:Sprite = new Sprite();
over.graphics.lineStyle(1, 0x000000);
over.graphics.beginFill(0x616D7E);
over.graphics.drawRect(xLoc, yLoc, width, height);
// assign the sprites
myButton.upState = normal;
myButton.downState = normal;
myButton.hitTestState = normal;
myButton.overState = over;
//add the button to the display tree
addChild(myButton);
//create button label
var tText:TextField = new TextField();
tText.mouseEnabled = false,
tText.x = xLoc;
tText.y = yLoc + iLabelOffset;
tText.width = width;
tText.selectable = false
var Format:TextFormat = new TextFormat();
Format.font = "Arial";
Format.color = 0x000000;
Format.size = fontsize;
Format.bold = false;
Format.align = TextFormatAlign.CENTER;
tText.defaultTextFormat = Format;
tText.text = label;
addChild(tText)
}
}
}
Есть что-нибудь, чтобы прокомментировать это? Я уверен, что я делаю много вещей неправильно, может быть, я действительно не получил всю объектно-ориентированную вещь? Кроме того, у меня плохое предчувствие того, как я использую «extends ...» после объявления класса, главным образом потому, что я все время использую Sprite и не очень понимаю, почему или что он делает (возникают проблемы выяснить в интернете, а) Еще одна вещь, в которой я не уверен - это именование переменных в AS3. Должен ли я использовать такие имена, как xLoc или iLabelOffset? Я думаю, что я не очень согласен с моим именем переменной как минимум?
Я надеюсь, что кто-то может дать мне толчок к лучшему треку, чем тот, на котором я сейчас нахожусь, так как я уверен, что должен улучшить свое кодирование AS3, прежде чем я продолжу работать над этим зверем.
Большое спасибо.