1

私は児童書アプリに取り組んでおり、すべてのシーンでキャラクターの会話に吹き出しを動的に入力したいと考えています。アニメーションとダイアログが機能するようになりました。以下はそのコードです。本には複数のページがあり、各ページには複数のキャラクターがあり、すべてのキャラクターには複数の会話があります。これを一般的なアプローチにして、繰り返し使用できるようにする最善の方法は何ですか。ダイアログを TEXT/XML ファイルに保存し、ページ番号、文字番号、ダイアログ番号のパラメータに基づいて動的に読み込んで表示することはできますか?

UIImage *bubble = [[UIImage imageNamed:@"BubbleLefthand.png"] 
                               resizableImageWithCapInsets:UIEdgeInsetsMake(15, 21, 15, 21)];
            UIImageView *imgView = [[[UIImageView alloc] initWithImage:bubble] autorelease];
            imgView.frame = CGRectMake(250, 350, 0, 0);
            UILabel  *xlabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
            xlabel.text = @"This is a dialogue text!!!";

            [imgView addSubview:xlabel];
            [self.view addSubview:imgView];
            [UIView animateWithDuration:0.5
                             animations:^(void) {
                                 imgView.frame = CGRectMake(250, 350, 300, -40);
                                 xlabel.frame = CGRectMake(30, 10, 200, 20);
                             } completion:^(BOOL finished) {
                                 STLog(@"ChildrenBookViewController ==> SPPECH BUBBLE ANIMATION COMPLETE. Switch Case: %d", pageNum);
                             }];

現在、私のダイアログは、スクリーンショットを添付するように表示されます。 ここに画像の説明を入力

4

1 に答える 1

0

ダイアログの整理に関しては、最上位レベルでのページごとの整理は問題ないようです。ページの属性として背景画像を定義できます。

ページの 1 つ下のレベルで、「イベント」を定義した方がよいと思います。各イベントはユーザーのアクションに対応します。または、前のイベントに自動的に続くイベントを定義することもできます。

各イベントでは、さまざまなタイプを使用できます: ダイアログの表示、ダイアログの非表示、BGM の制御、効果音の制御。

  • ダイアログの表示/非表示イベントの場合、ダイアログ ID (ダイアログはここに直接配置するか、別のファイルに収集することができます) に加えて、バブルの方向と、場合によっては寸法を定義する必要があります。文字 id は、吹き出しやフォントの外観を変更するために使用しない限り、役に立たない可能性があります。

  • バックグラウンド ミュージックを制御するために、現在再生中の音楽を再生するか停止するかを指定する属性を指定できます。再生する BGM を子ノードとして指定することもできます。

  • 効果音については、再生したいトラックを指定できます。

これは、アプリが持つことができる機能を考えるときに私が考えたいくつかのアイデアです. もう少し詳細を教えていただければ、より多くのアイデアを得ることができます。


表示に関する副次的な問題: ファイルの外側の端が透明であることを確認しpng、UIImageView の背景色を に設定し[UIColor clearColor]ます。

于 2012-06-29T13:10:57.797 に答える