2008年6月13日金曜日

1-05 iPhone Graphics and Media Overview.m4v

ビデオのメモ

グラフィック関連ではUIKit Graphics、Quartz 2D、Core Animation、OpenGL ES、Media Player、Core Audioの6つを利用できます。

UIKitのGraphicsは画面切り替えなどのアニメーションも含む2Dのユーザインタフェースを作り、Quartz 2Dは低レベルの2D描画、Core Animationはアプリケーションなどのアニメーション、OpenGL ESはゲーム用、Media Playerは動画再生、Core AudoとOpen ALは音声と役割を担っています。

UIKit Graphicsの主なClassは以下の通りです。
UIImage - イメージデータのクラス
UIImageView - インタフェースにイメージをいれたり、スライドショーのイメージを入れる
UIColor - 装置の色関連
UIFont、UILabel - 文字処理関連
UIScreen - スクリーン関連
他にユーティリティ関数がある。

低レベルのグラフィック処理を担当するQuartz 2Dでは、点や線、曲線、四角などはCGPathRefで扱い、四角の塗りつぶしはCGGradientRef、CGImageRefはPNGを中心にしてTIFF、JPEG、GIF、BMP、ICO、CUR、XBMを扱い、CGPDFDocumentRefはPDFを扱っています。

Core Graphicsで緑の枠に青い四角を描く描画サンプルです。
- (void) drawRect:(CGRect)rect
{
 CGContextRef myContext = UICurrentContext();

 CGRect ourRect = CGRectMake(40, 40, 240, 120);

 CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
 CGContextFillRect(context, ourRect);

 CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0);
 CGContextStrokeRectWithWidth(context, ourRect, 10);
}

Core Animationはユーザインタフェースのアニメーションを提供しています。レイヤをサポートしており、一つのレイヤに写真を置き、その上に文字のレイヤを置き、さらに絵のレイヤを置くことができます。また、レイヤを半透明にしたり、フェイドインアウトでレイヤを入れ替えることもできます。

Core AnimationのレイヤではCALayerが主のクラスとなり、CAEAGLLayre、CATiledLayer、CAScrollLayerがあります。また、アニメーションのクラスではCAAnimationが主のクラスとなり、CAPropertyAnimation、CABasicAnimation、CAKeyframeAnimationがあります。CAAnimationの下にはCAPropertyAnimationの他に、CATransitionとCAAnimationGroupがあります。

OpenGL ESはOpenGLの機能制限版でiPhoneで採用しているのはバージョン1.1です。詳細は以下のURLを参照してください。

http://www.khronos.org/opengles/

Media Player Frameworkの動画はフルスクリーンのみで、.mov、.mp4、.m4v、.3gpの再生ができます。

動画の生成と制御
- (id) initWithContentURL:(NSURL *)url;
- (
void) play;
- (
void) stop;

プロパティ
@property MPMovieScalingMode scalingMode;
@property BOOL userCanShowTransportControls;

ノティフィケイション
NSString * const MPMoviePlayerScalingModeDidChangeNotification;
NSString *
const MPMoviePlayerPlaybackDidFinishNotification;

MPMoviePlayerCotrollerの例

- (void) playMovieAtURL: (NSURL *)theURL
{
 MPMoviePlayerCotroller *theMovie = [[MPMoviePlayerCotroller alloc] initWithContentURL:theURL];
 theMovie.userCanShowTransportControls = NO; default

 [[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selsector(myMovieFinishedCallbask:)
            name:MPMoviePlayerPlaybackDidFinishNotification
           object:theMovie];
 [theMovie.play];
}

- (
void) myMovieFinishedCallbask:(NSNotification*) aNotificaition
{
// remove the observer, release the MPMoviePlayerController
}

0 件のコメント: