Cocos2dx-JS下調(diào)用java和oc的方法


引擎版本為3.12

Android

1.在游戲的Cocos2dxactivity中編寫(xiě)一個(gè)靜態(tài)方法:

/**
 * 設(shè)置橫豎屏
 * @param orientation
 */

public static void changedActivityOrientation(int orientation){
    Activity currAppActivity = (Activity) AppActivity.getContext();
    switch(orientation)
    {
    case 1://橫屏
        currAppActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    break;
    case 2://豎屏
        currAppActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    break;
    }
}

2.在js代碼中調(diào)用這個(gè)段java代碼,這里我用的是jsb.reflection.callStaticMethod來(lái)調(diào)用的如捅,看一下代碼:

/**
 *   orientation int 1:橫屏 2:豎屏
 */
deviceUtil.setScreenOrientation=function(orientation){
    if(cc.sys.os==cc.sys.OS_ANDROID){
        jsb.reflection.callStaticMethod(jsCallJavaMethod.CLASSNAME,"changedActivityOrientation","(I)V", orientation); //調(diào)用java代碼
        if (orientation == 1) {
            var glView = cc.director.getOpenGLView();
            var frame = glView.getFrameSize();
            glView.setFrameSize(frame.height, frame.width);
            cc.director.getOpenGLView().setDesignResolutionSize(1280,720,cc.ResolutionPolicy.EXACT_FIT);
        }else if (orientation == 2) {
            var glView = cc.director.getOpenGLView();
            var frame = glView.getFrameSize();
            glView.setFrameSize(frame.height, frame.width);
            cc.director.getOpenGLView().setDesignResolutionSize(720,1280,cc.ResolutionPolicy.EXACT_FIT);
        }
    }
}

deviceUtil.js是一個(gè)全局文件

通過(guò)以上兩步就可以在Android平臺(tái)通過(guò)代碼動(dòng)態(tài)的控制游戲中橫豎屏的切換虎囚。

IOS

1.在AppController.mm下聲明一個(gè)靜態(tài)變量rvc,如下:

static RootViewController *rvc;

2.然后在didFinishLaunchingWithOptions這個(gè)方法中初始化這個(gè)靜態(tài)變量五慈,如下:

rvc = viewController; //把RootViewController的實(shí)例化對(duì)象復(fù)制給我們的靜態(tài)變量纳寂,供下面使用主穗。

3.在AppController.mm中編寫(xiě)兩個(gè)靜態(tài)方法,用來(lái)調(diào)整蘋(píng)果下的屏幕切換

/**
 *  轉(zhuǎn)屏 orientation 1:橫屏 2:豎屏
 **/

+ (void) changeScreenOrientationHorizontal{
    //旋轉(zhuǎn)屏幕毙芜,但是只旋轉(zhuǎn)當(dāng)前的View
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    rvc.view.transform = CGAffineTransformMakeRotation(M_PI/2);
    CGRect  frame_v = rvc.view.bounds;
    rvc.view.bounds = CGRectMake(0, 0, frame_v.size.height, frame_v.size.width);
}
+ (void) changeScreenOrientationVertical{
    //旋轉(zhuǎn)屏幕忽媒,但是只旋轉(zhuǎn)當(dāng)前的View
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
    rvc.view.transform = CGAffineTransformMakeRotation(M_PI*2);
    CGRect  frame_v = rvc.view.bounds;
    rvc.view.bounds = CGRectMake(0, 0, frame_v.size.height, frame_v.size.width);
}

4.在js代碼中調(diào)用OC的靜態(tài)方法:

/*
    orientation int 1:橫屏 2:豎屏
*/
deviceUtil.setScreenOrientation=function(orientation){
    if (cc.sys.os==cc.sys.OS_IOS) {
        if (orientation == 1) {
            jsb.reflection.callStaticMethod("AppController", "changeScreenOrientationHorizontal");      //調(diào)用OC代碼
            var glView = cc.director.getOpenGLView();
            var frame = glView.getFrameSize();
            glView.setFrameSize(frame.height, frame.width);
            cc.director.getOpenGLView().setDesignResolutionSize(1280,720,cc.ResolutionPolicy.EXACT_FIT);
        }else if (orientation == 2) {
            jsb.reflection.callStaticMethod("AppController", "changeScreenOrientationVertical");
            var glView = cc.director.getOpenGLView();
            var frame = glView.getFrameSize();
            cc.log(JSON.stringify(frame));
            glView.setFrameSize(frame.height, frame.width);
            cc.director.getOpenGLView().setDesignResolutionSize(720,1280,cc.ResolutionPolicy.EXACT_FIT);
        }
    }
}

完成以上的內(nèi)容,就可以實(shí)現(xiàn)ios下屏幕自動(dòng)切換∫钢啵現(xiàn)在存在的一點(diǎn)問(wèn)題是在模擬器上看晦雨,切換有點(diǎn)卡頓,不知道真機(jī)上有沒(méi)有問(wèn)題隘冲。這個(gè)問(wèn)題在Android真機(jī)上是不存在的闹瞧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市展辞,隨后出現(xiàn)的幾起案子奥邮,更是在濱河造成了極大的恐慌,老刑警劉巖罗珍,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洽腺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡覆旱,警方通過(guò)查閱死者的電腦和手機(jī)蘸朋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)通殃,“玉大人度液,你說(shuō)我怎么就攤上這事』啵” “怎么了堕担?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)曲聂。 經(jīng)常有香客問(wèn)我霹购,道長(zhǎng),這世上最難降的妖魔是什么朋腋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任齐疙,我火速辦了婚禮,結(jié)果婚禮上旭咽,老公的妹妹穿的比我還像新娘贞奋。我一直安慰自己,他們只是感情好穷绵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布轿塔。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勾缭。 梳的紋絲不亂的頭發(fā)上揍障,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音俩由,去河邊找鬼毒嫡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛幻梯,可吹牛的內(nèi)容都是我干的兜畸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼碘梢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膳叨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起痘系,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饿自,沒(méi)想到半個(gè)月后汰翠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昭雌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年复唤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烛卧。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佛纫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出总放,到底是詐尸還是另有隱情呈宇,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布局雄,位于F島的核電站甥啄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏炬搭。R本人自食惡果不足惜蜈漓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宫盔。 院中可真熱鬧融虽,春花似錦、人聲如沸灼芭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谆吴,卻和暖如春倒源,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句狼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工笋熬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腻菇。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓胳螟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親筹吐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糖耸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,860評(píng)論 25 707
  • 一、SFTP是什么丘薛?和FTP有什么不同嘉竟? FTP(File Transport Protocol)最早是發(fā)...
    2897275c8a00閱讀 3,382評(píng)論 0 2
  • 兒在遠(yuǎn)方父母荒,千里之隔親情涼洋侨。 血脈相連不敵遠(yuǎn)舍扰,日常照料難理償。 父母年高病纏身希坚,不能遠(yuǎn)門(mén)留家鄉(xiāng)边苹。 逐年身弱自難...
    徐一村閱讀 189評(píng)論 0 6
  • 夢(mèng)見(jiàn)了綠皮火車。小時(shí)候的自己裁僧,站在家門(mén)不遠(yuǎn)處的鐵軌旁个束,看著綠皮火車呼嘯而過(guò)。遠(yuǎn)帆離火車很近聊疲,仿佛一伸手就能碰到茬底。火...
    大火三千閱讀 305評(píng)論 0 0
  • 今天我是來(lái)刷在家全職帶娃就會(huì)與世界脫軌的這口黑鍋的售睹! 昨天推送的文章中桩警,關(guān)于吃飯的54321原則是一個(gè)蘇蒂小騎的育...
    貝殼在攀巖閱讀 399評(píng)論 0 0