From 22495953e9be03eb76ca6d14f4579b5d3fb62078 Mon Sep 17 00:00:00 2001 From: xiaoyu Date: Sun, 28 Apr 2024 11:19:25 +0800 Subject: [PATCH] 打开多点触控,开启游戏时使用hud遮罩 --- ios/Podfile | 1 + ios/Runner/Runner-Bridging-Header.h | 1 - ios/Runner/Wowgame/Classes/game_animal/AniSettingsLayer.cpp | 2 ++ ios/Runner/Wowgame/Classes/game_food/SettingsLayer.cpp | 2 ++ ios/Runner/Wowgame/Classes/game_halloween/HSettingsLayer.cpp | 2 ++ ios/Runner/Wowgame/Classes/game_toy/ToySettingsLayer.cpp | 2 ++ ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm | 24 +++++++++++++++++++++++- ios/Runner/Wowgame/WowGameClasses/WowGameViewController.mm | 2 +- 8 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 555ec92..7c53538 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -33,6 +33,7 @@ target 'Runner' do use_frameworks! use_modular_headers! pod 'SingSoundSDK' + pod 'DMProgressHUD' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h index 2f58a05..6d5a9fb 100644 --- a/ios/Runner/Runner-Bridging-Header.h +++ b/ios/Runner/Runner-Bridging-Header.h @@ -4,4 +4,3 @@ #import "WowGameCocosManager.h" -#import diff --git a/ios/Runner/Wowgame/Classes/game_animal/AniSettingsLayer.cpp b/ios/Runner/Wowgame/Classes/game_animal/AniSettingsLayer.cpp index a853420..066c582 100644 --- a/ios/Runner/Wowgame/Classes/game_animal/AniSettingsLayer.cpp +++ b/ios/Runner/Wowgame/Classes/game_animal/AniSettingsLayer.cpp @@ -124,6 +124,8 @@ bool AniSettingsLayer::init(float width, float height, std::function // adjust the weird menu post-layout // quick fix menuCenter->setPositionY(webLinkButton->getBoundingBox().getMinY() - menuItemAbout->getBoundingBox().size.height - paddingTop); + menuCenter->setVisible(false); + return true; } diff --git a/ios/Runner/Wowgame/Classes/game_food/SettingsLayer.cpp b/ios/Runner/Wowgame/Classes/game_food/SettingsLayer.cpp index eec1a51..1b7c4b5 100644 --- a/ios/Runner/Wowgame/Classes/game_food/SettingsLayer.cpp +++ b/ios/Runner/Wowgame/Classes/game_food/SettingsLayer.cpp @@ -144,6 +144,8 @@ bool SettingsLayer::init(float width, float height, std::function onL menuCenter->setPosition(lowerStuffContainer->getContentSize().width/2, lowerStuffContainer->getContentSize().height/2); + menuCenter->setVisible(false); + wholeContainer->setContentSize(cocos2d::Size(getContentSize().width, upperStuffContainer->getContentSize().height + lowerStuffContainer->getContentSize().height + paddingBottom + paddingTop)); wholeContainer->setAnchorPoint(cocos2d::Vec2(0.5, 0.5)); wholeContainer->setPosition(width/2, height/2); diff --git a/ios/Runner/Wowgame/Classes/game_halloween/HSettingsLayer.cpp b/ios/Runner/Wowgame/Classes/game_halloween/HSettingsLayer.cpp index d364ec4..0997cc2 100644 --- a/ios/Runner/Wowgame/Classes/game_halloween/HSettingsLayer.cpp +++ b/ios/Runner/Wowgame/Classes/game_halloween/HSettingsLayer.cpp @@ -99,6 +99,8 @@ bool HSettingsLayer::init(float width, float height, std::function on menuCenter->setPosition(lowerStuffContainer->getContentSize().width/2, lowerStuffContainer->getContentSize().height/2); + menuCenter->setVisible(false); + wholeContainer->wrapContents(); wholeContainer->setAnchorPoint(cocos2d::Vec2(0.5, 0.5)); wholeContainer->setPosition(width/2, height/2); diff --git a/ios/Runner/Wowgame/Classes/game_toy/ToySettingsLayer.cpp b/ios/Runner/Wowgame/Classes/game_toy/ToySettingsLayer.cpp index 8570ee0..399cb32 100644 --- a/ios/Runner/Wowgame/Classes/game_toy/ToySettingsLayer.cpp +++ b/ios/Runner/Wowgame/Classes/game_toy/ToySettingsLayer.cpp @@ -109,6 +109,8 @@ bool ToySettingsLayer::init(float width, float height, std::function menuCenter->setPosition(lowerStuffContainer->getContentSize().width/2, lowerStuffContainer->getContentSize().height/2); + menuCenter->setVisible(false); + wholeContainer->setContentSize(cocos2d::Size(getContentSize().width, upperStuffContainer->getContentSize().height + lowerStuffContainer->getContentSize().height + paddingTop)); wholeContainer->setAnchorPoint(cocos2d::Vec2(0.5, 0.5)); wholeContainer->setPosition(width/2, height/2); diff --git a/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm b/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm index 6d9f076..188ccdf 100644 --- a/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm +++ b/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm @@ -10,6 +10,7 @@ #include "cocos2d.h" #import "CocosAppDelegate.h" +#import @interface WowGameCocosManager () { cocos2d::Application *_app; @@ -50,10 +51,24 @@ static CocosAppDelegate cocosAppDelegate; [self.gameViewController dismissViewControllerAnimated:YES completion:nil]; } +static DMProgressHUD *hud; - (void)runGame:(NSInteger)gameid { UIWindow *window = UIApplication.sharedApplication.delegate.window; UIViewController *rootvc = window.rootViewController; - if ([rootvc isKindOfClass:WowGameViewController.class]) { + + hud = [DMProgressHUD showHUDAddedTo:window maskType:DMProgressHUDMaskTypeClear]; + hud.loadingType = DMProgressHUDLoadingTypeIndicator;//默认 + hud.text = @"Waiting..."; + + if ([rootvc isKindOfClass:WowGameViewController.class] || + [rootvc.presentedViewController isKindOfClass:WowGameViewController.class]) { + if ([NSThread isMainThread]) { + [hud dismiss]; + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [hud dismiss]; + }); + } return; } if (!self.gameViewController) { @@ -67,6 +82,13 @@ static CocosAppDelegate cocosAppDelegate; } else { cocos2d::Director::getInstance()->resume(); } + if ([NSThread isMainThread]) { + [hud dismiss]; + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [hud dismiss]; + }); + } [rootvc presentViewController:self.gameViewController animated:YES completion:nil]; diff --git a/ios/Runner/Wowgame/WowGameClasses/WowGameViewController.mm b/ios/Runner/Wowgame/WowGameClasses/WowGameViewController.mm index 138aef8..2f710cf 100644 --- a/ios/Runner/Wowgame/WowGameClasses/WowGameViewController.mm +++ b/ios/Runner/Wowgame/WowGameClasses/WowGameViewController.mm @@ -28,7 +28,7 @@ numberOfSamples: cocos2d::GLViewImpl::_multisamplingCount ]; // Enable or disable multiple touches - [eaglView setMultipleTouchEnabled:NO]; + [eaglView setMultipleTouchEnabled:YES]; // Set EAGLView as view of RootViewController self.view = eaglView; -- libgit2 0.22.2