0

-- appdelegate.m には、他のすべてのデフォルト呼び出しの中でこれがあります: --

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self.window makeKeyAndVisible];
    NSLog(@"Launched");
    return YES;
}

-- 私の main.mm は次のようになります: --

#import <UIKit/UIKit.h>

#import "AppDelegate.h"
#include <allegro5/allegro.h>
ALLEGRO_DISPLAY *Display;

int main(int argc, char *argv[])
{
    al_init();
    al_set_new_display_option(ALLEGRO_SUPPORTED_ORIENTATIONS,
                           ALLEGRO_DISPLAY_ORIENTATION_LANDSCAPE,ALLEGRO_REQUIRE);
    Display = al_create_display(960, 640);
    printf("%d, %d", al_get_display_width(Display),                
                    al_get_display_height(Display));

    return 0;
}

プロジェクトに allegro.h と必要なすべてのライブラリ/フレームワークを含め、main 内で al_init() を呼び出すとすぐに、プログラムは「起動済み」の出力を停止します。AppDelegate が完全に無視されているようです。誰でも何かヒントを得ましたか???

4

3 に答える 3

0

Allegro 5.1 には rootViewController が設定されていませんでした。そのために allegro のソース コードを修正したところ、すべてが iOS 6.0/6.1 で動作するようになりました。

ViewController.m にshouldAutorotateメソッドとsupportedInterfaceOrientationsメソッドを追加し、window.rootViewController = vc; を追加しました。"static void iphone_add_screen(UIScreen *screen)" - allegroAppDelegate.m の下のメソッド。次に、アレグロを再コンパイルしました。

ご協力ありがとうございました。

于 2013-03-19T09:15:04.213 に答える
0

Allegro プログラムは、ソース コード レベルでクロス プラットフォームであることを意図しています。したがって、Allegro が既に行っているように、AppDelegate を提供する必要はありません。OS イベントは、クロス プラットフォームの方法で応答できる Allegro イベントに変換されます。

独自の AppDelegate が本当に必要な場合は、Allegro のソース コードを編集する必要があります。

于 2013-03-16T16:26:21.677 に答える
0

0 を返す代わりに、整数の戻り値を設定する必要があります。

   int retVal = UIApplicationMain(argc, argv, nil, nil);
   return retVal;

また

   return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

それはうまくいくかもしれません。

于 2013-03-15T16:00:09.587 に答える