Flash/as2
目次
- 1 asメモ
- 1.1 コーディングについて
- 1.2 クラスの書き方
- 1.3 クラスを置くディレクトリを変更
- 1.4 クラスの継承
- 1.5 $(LocalData)/Classesとは
- 1.6 初期読込ファイル
- 1.7 トップムービークリップクラス
- 1.8 MCクラス内から子ムービークリップを操作する
- 1.9 MCクラス内にライブラリのMCを設定
- 1.10 クラスからクラス呼び出し
- 1.11 x,yを設定したままattach
- 1.12 イベント制御クラス
- 1.13 コンポーネント作成方法
- 1.14 イベント削除
- 1.15 X秒間隔でイベントを発生させる
- 1.16 flashにダイレクトに画像を表示させたい時
- 1.17 カラー部分に変数を入れる
- 1.18 文字列検索
- 1.19 IMEが有効なら切る
- 1.20 IMEで半角英数でないとき
- 1.21 AS2プリローダークラス(ローディング
- 1.22 as2アラートダイアログサンプル
asメモ
コーディングについて
基本スタイル
var str:String = "test";
var o:Array = [1, 2, 3];
var o:Object = {a: 1, b: 2, c: 3};
for (var i:int = 0; i < 3; i++)
{
doSomething(i);
}
function getId():String
{
return "test";
}
型自由の型宣言はこのように
var value:*;
MCなどの名前は_mcなどとしない。borderSkinなどとする。
コーディング規約URL http://www.trick7.com/blog/2008/03/14-131809.php
クラスの書き方
Class1.asを以下のように
class Class1
{
public var id:Number = 1; // プロパティ
private var pid:Number = 2;
public function Class1(str:String)
{
trace("コンストラクタ" + str);
this._private1()
}
public function getId():Number
{
return this.id;
}
// プライベートメソッド
private function _private1():Void
{
trace("private");
}
// 静的メソッド
public static function static1():Void
{
trace("static");
}
}
test.flaを以下のように
var c:Class1 = new Class1("a");
trace(c.id);
trace(c.getId());
// static
Class1.static1();
クラスを置くディレクトリを変更
asディレクトリにClass1.asを置きたい場合
Class1.asを以下のように
class as.Class1
{
}
test.flaを以下のように
var c:as.Class1 = new as.Class1();
以下のようにすることも可能(コチラがコーディング規約で推奨)
import as.Class1; var c:Class1 = new Class1();
クラスの継承
class MyClass1 extends Class1
{
public function MyClass1(str:String)
{
super(str); // 親コンストラクタへ
}
public function addMethod1():Void
{
trace("add");
}
}
var c:MyClass1 = new MyClass1("a");
c.addMethod1();
class as.MyClass1 extends as.Class1 // ディレクトリが違う場合
$(LocalData)/Classesとは
環境設定/actionscript/as2設定
C:\Documents and Settings\usr\Local Settings\Application Data\Macromedia\Flash 8\ja\Configuration\Classes
初期読込ファイル
toplevel.as
トップムービークリップクラス
ライブラリのシンボルを右クリックで、 リンゲージを開く。 as2.0クラスを設定する ここでdir1.MyMovieClipと入れると、 ./dir1/MyMovieClip.asが読み込まれる
例)MyMovieClip.fla トップシンボルからリンゲージas2にMyMovieClipを設定する。
test1.asに
class dir1.MyMovieClip extends MovieClip
{
public function MyMovieClip()
{
trace("よみこみ");
method1();
}
public function method1():Void
{
trace("method1");
}
public function onEnterFrame():Void
{
this._rotation += 2;
}
public function onRelease()
{
trace("releace");
}
}
を設定 MyMovieClipのムービークリップをステージに設置。 コンパイルするとasが設定される。
MCクラス内から子ムービークリップを操作する
class ParentMc extends MovieClip
{
public var MyChild:MovieClip;
public function ParentMc() {
MyChild = this["MyChild"];
MyChild._rotation=100;
MCクラス内にライブラリのMCを設定
this.mc1 = this.attachMovie("mc1", "mc1", 300);
trace(this.mc1._x);
クラスからクラス呼び出し
class dir1.MyMovieClip extends MovieClip
{
public function MyMovieClip()
{
var c:Class1 = new Class1;
c.method1();
}
}
class Class1
{
public function Class1() {
trace("constractor");
}
public function method() {
trace("method1");
}
}
x,yを設定したままattach
this.attachMovie("mc", "mc", 1, {_x: 150, _y: 90});
イベント制御クラス
import mx.events.EventDispatcher を使うとaddEventListenerが使える
例)
// mc1ムービークリップを用意しておく
import mx.events.EventDispatcher;
var objDispatcher:Object = {};
EventDispatcher.initialize(objDispatcher);
objDispatcher.addEventListener("onEvent1", mc1);
mc1.onEvent1 = function(objEvent:Object):Void {
trace("onEvent1実行");
trace(objEvent.param1);
};
objDispatcher.dispatchEvent({type:"onEvent1", target:mc1, param1:"param_a"});
コンポーネント作成方法
コンポーネントしたい物をMCで作成し、 スクリプトをclassで用意、 リンゲージ設定を行い、 ライブラリから右クリックでコンポーネント定義を行う。 書き出したい場合は、swc書き出しを行う。 書き出しを行い再起動すると、コンポーネントパネルに表示される。
イベント削除
this.onRelease = function() {
delete this.onRelease;
};
X秒間隔でイベントを発生させる
var intervalId:Number = setInterval(this, "_event1", 3000); // 3秒
function _event1():Void {
trace("interfal1");
}
clearInterval(intervalId); // イベント削除
flashにダイレクトに画像を表示させたい時
mc1をhtml許可にして
mc1.htmlText = "<img src='Winter.gif'>test<a href='http://www.example.com'><u><font color='#0000ff'>test</font></u></a>";
カラー部分に変数を入れる
beginFill(Number("0x" + color));
文字列検索
url = "file:///";
if (url.indexOf("file:") > -1) trace("match");
IMEが有効なら切る
if (System.IME.getEnabled()) {
System.IME.setEnabled(false);
}
IMEで半角英数でないとき
if (System.IME.getConversionMode() != System.IME.ALPHANUMERIC_HALF) {
// 半角英数に変換
System.IME.setConversionMode(System.IME.ALPHANUMERIC_HALF);
}
AS2プリローダークラス(ローディング
class lib.Preloader extends MovieClip {
// ローダーMC
var _loader:MovieClip;
// constructer
public function Preloader() {
_init();
onEnterFrame = function() {
// ロード率
var per:Number = Math.floor(_root.getBytesLoaded() / _root.getBytesTotal()) * 100;
_loader._width = Math.floor(140 * per / 100);
if (_root.getBytesLoaded() == _root.getBytesTotal()) {
delete this.onEnterFrame;
_root.gotoAndStop('main');
// removeMovieClip(this);// attachMovieで配置したときのみ有効
}
}
}
private function _init() {
// 枠表示
var _mc:MovieClip = this.createEmptyMovieClip('preloader', 100);
_mc.beginFill(0xFFFFFF, 100);
_mc.lineStyle(1, 0x444444, 100);
_mc.moveTo(0, 0);
_mc.lineTo(0, 20);
_mc.lineTo(150, 20);
_mc.lineTo(150, 0);
_mc.endFill();
// ロードーMC
_loader = this.createEmptyMovieClip('loader', 200);
_loader.beginFill(0x555555, 100);
//_loader.lineStyle(1, 0x000000, 100);
_loader.moveTo(0, 0);
_loader.lineTo(0, 10);
_loader.lineTo(10, 10);
_loader.lineTo(10, 0);
_loader.endFill();
_loader._y = 5;
_loader._x = 5;
}
}
as2アラートダイアログサンプル
// 利用方法
// 警告ダイアログクラス
// import app.model.AlertDialog;
// var _alert = new AlertDialog(_stage);
// _alert.display("テスト");
// コンポーネントボタンクラス
import mx.controls.Button;
// 警告ダイアログクラス
class app.model.AlertDialog {
// ステージMC
private var _stage:MovieClip;
// ボタン
private var _button:Button;
// constructer
public function AlertDialog(st:MovieClip) {
_stage = st;
}
// アラートダイアログ表示
public function display(msg:String):Void {
var _mc:MovieClip = _stage.createEmptyMovieClip("alert", _stage.getNextHighestDepth());
_mc.beginFill(0xFFFFFF, 100);
_mc.lineStyle(1, 0x000000, 100);
_mc.moveTo(0, 0);
_mc.lineTo(0, 70);
_mc.lineTo(160, 70);
_mc.lineTo(160, 0);
_mc.endFill();
_mc._x = Stage.width / 2 - _mc._width / 2;
_mc._y = Stage.height / 2 - _mc._height / 2;
// ラベル
var _label:TextField = _mc.createTextField("label", 1, 0, 0, 150, 40);
// 折返許可
_label.wordWrap = true;
// 複数行
_label.multiline = true;
_label.text = msg;
// OKボタン生成
_button = _mc.createClassObject(Button, "button2", 5, {label:"OK"});
_button._y = _label._y + _label._height;
_button._x = _mc._width / 2 - _button.width / 2;
// OKボタンをクリックしたとき
_button.onRelease = function():Void {
// ダイアログ削除
this._parent.removeMovieClip();
}
}
}
