わかってる人には当たり前かもしれないけど、
AS3はクラスオブジェクトをオブジェクトとして使えるのか?と言う疑問。
一応試した。
●FlashTest04.as
package test
{
import flash.display.MovieClip;
public class FlashTest04 extends MovieClip
{
public function FlashTest04(){
var classObject:Class = StaticTestClass;
trace("クラスオブジェクト",classObject.aaa);
}
}
}
●StaticTestClass.as
package test
{
public class StaticTestClass
{
public static var aaa:String = "ほほほ";
}
}
●出力
クラスオブジェクト ほほほ
2011年3月24日木曜日
2011年3月23日水曜日
高速tweenエンジン
今はtweener使ってるけど、
やっぱりアイテム数が多いのでtweenエンジンも高速なものにしたいと思って調べてみた
http://code.google.com/p/kawanet/wiki/KTweenJ
http://kawa.at.webry.info/201002/article_2.html
大体同じことが出来るけど開始ディレイは無いので少し工夫がいる。
テストコード
import net.kawa.tween.KTween;
import net.kawa.tween.KTJob;
import net.kawa.tween.easing.*;
//http://code.google.com/p/kawanet/wiki/KTweenFAQJ
//KTween.to(mySprite, 2, {alpha: 0.0}, Linear.easeOut, callback);
//KTween.from(mySprite, 3, {x:320, y;480}, Quad.easeOut).round = true;
//KTween.fromTo(mySprite, 4, {x:0, y:0}, {x:320, y;480}, Elastic.easeOut);
var job:KTJob = KTween.to(mySprite, 2,{x:320,y:40},Elastic.easeOut);
job.onCloseParams = [1234,"へへへ"];
job.onClose = function(a:int,b:String){
trace("わわわ",a,b);
}
やっぱりアイテム数が多いのでtweenエンジンも高速なものにしたいと思って調べてみた
http://code.google.com/p/kawanet/wiki/KTweenJ
http://kawa.at.webry.info/201002/article_2.html
大体同じことが出来るけど開始ディレイは無いので少し工夫がいる。
テストコード
import net.kawa.tween.KTween;
import net.kawa.tween.KTJob;
import net.kawa.tween.easing.*;
//http://code.google.com/p/kawanet/wiki/KTweenFAQJ
//KTween.to(mySprite, 2, {alpha: 0.0}, Linear.easeOut, callback);
//KTween.from(mySprite, 3, {x:320, y;480}, Quad.easeOut).round = true;
//KTween.fromTo(mySprite, 4, {x:0, y:0}, {x:320, y;480}, Elastic.easeOut);
var job:KTJob = KTween.to(mySprite, 2,{x:320,y:40},Elastic.easeOut);
job.onCloseParams = [1234,"へへへ"];
job.onClose = function(a:int,b:String){
trace("わわわ",a,b);
}
2011年3月6日日曜日
プライベートメソッドの定義
プライベートにしたいメソッドを実装側(.mのほう)にインターフェース宣言を置く事で出来る。
(Private)の括弧の内側部分は任意で良いらしい。Protectedは無い。
(Private)の括弧の内側部分は任意で良いらしい。Protectedは無い。
#import "TestViewController.h"
@interface TestViewController(Private)
- (void) buttonDidPush;
@end
@implementation TestViewController
......
プロパティへのアクセス
プロパティへのアクセスはgetterやsetterをつかってアクセス出来る。
または構造体のメンバとして直接アクセスすることも出来る。
クラス定義:A.h
#import <Foundation/Foundation.h>
@interface A : NSObject {
@public
int aaa;
}
@property int aaa;//デフォルトでreadWriteになっている
@end
クラス定義:A.m
#import "A.h"
@implementation A
@synthesize aaa;
@end
呼び出し側:
A *abc = [[A alloc] init];
abc->aaa = 125;
NSLog(@"test = %d",abc->aaa);//プロパティへ直接アクセス
NSLog(@"test = %d",abc.aaa);//ゲタを使ってアクセス
結果:
2011-03-06 19:22:32.178 testAccessPropertyOrAccesser[50215:207] test = 125
2011-03-06 19:22:32.180 testAccessPropertyOrAccesser[50215:207] test = 125
ラベル:
iPhone,
Objective-C,
プログラミング
2011年3月4日金曜日
ブロック
ブロック、良く解らないけどプログラムの小さな固まり(たぶんすごく大きくても良いけど)。
変数や、リテラル値として定義できる。
AS3の関数リテラルやJavaScriptのクロージャ?のような感じ。
ちょっとわかりにくいので使わなくても良いかな?と思うけど、
COCOAフレームワークのではメソッドの引数として使われることもあるようなので必須なのかも。
変数や、リテラル値として定義できる。
AS3の関数リテラルやJavaScriptのクロージャ?のような感じ。
ちょっとわかりにくいので使わなくても良いかな?と思うけど、
COCOAフレームワークのではメソッドの引数として使われることもあるようなので必須なのかも。
int a = 5;
int (^onefrom)(int); //ブロック変数定義
onefrom = ^(int anint){ //ブロックのリテラル定義、ブロック変数に代入
int b = 10;
return anint +a +b;
};
NSLog(@"Block =%d",onefrom(20));
結果:
2011-03-04 22:46:43.113 testBlock[15953:207] Block =35
ラベル:
iPhone,
Objective-C,
プログラミング
登録:
投稿 (Atom)