ANE-Game-Center is a Air Native Extension for Apple’s game center integration  on the iOS platform. Using this extension, your game will be able to perform the following actions:
- Authenticate the local player
- Get the local player info
- Get the local player’s score
- Report a score
- Report an achievement
- Show a leaderboard
- Show the achievements
- Get the local player’s friends
Sample
package { import com.sticksports.nativeExtensions.gameCenter.GCLeaderboard; import com.sticksports.nativeExtensions.gameCenter.GCPlayer; import com.sticksports.nativeExtensions.gameCenter.GameCenter; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFormatAlign; [SWF(width='320', height='480', frameRate='30', backgroundColor='#000000')] public class GameCenterExtensionTest extends Sprite { private var direction : int = 1; private var shape : Shape; private var feedback : TextField; private var buttonFormat : TextFormat; public function GameCenterExtensionTest() { shape = new Shape(); shape.graphics.beginFill( 0x666666 ); shape.graphics.drawCircle( 0, 0, 100 ); shape.graphics.endFill(); shape.x = 0; shape.y = 240; addChild( shape ); feedback = new TextField(); var format : TextFormat = new TextFormat(); format.font = "_sans"; format.size = 16; format.color = 0xFFFFFF; feedback.defaultTextFormat = format; feedback.width = 320; feedback.height = 260; feedback.x = 10; feedback.y = 210; feedback.multiline = true; feedback.wordWrap = true; feedback.text = "Hello"; addChild( feedback ); addEventListener( Event.ENTER_FRAME, animate ); GameCenter.init(); createButtons(); } private function createButtons() : void { var tf : TextField = createButton( "isSupported" ); tf.x = 10; tf.y = 10; tf.addEventListener( MouseEvent.MOUSE_DOWN, checkSupported ); addChild( tf ); tf = createButton( "authenticate" ); tf.x = 170; tf.y = 10; tf.addEventListener( MouseEvent.MOUSE_DOWN, authenticateLocalPlayer ); addChild( tf ); tf = createButton( "localPlayer" ); tf.x = 10; tf.y = 50; tf.addEventListener( MouseEvent.MOUSE_DOWN, getLocalPlayer ); addChild( tf ); tf = createButton( "playerScore" ); tf.x = 170; tf.y = 50; tf.addEventListener( MouseEvent.MOUSE_DOWN, getPlayerScore ); addChild( tf ); tf = createButton( "submitScore" ); tf.x = 10; tf.y = 90; tf.addEventListener( MouseEvent.MOUSE_DOWN, submitScore ); addChild( tf ); tf = createButton( "submitAchievement" ); tf.x = 170; tf.y = 90; tf.addEventListener( MouseEvent.MOUSE_DOWN, submitAchievement ); addChild( tf ); tf = createButton( "showLeaderboard" ); tf.x = 10; tf.y = 130; tf.addEventListener( MouseEvent.MOUSE_DOWN, showLeaderboard ); addChild( tf ); tf = createButton( "showAchievements" ); tf.x = 170; tf.y = 130; tf.addEventListener( MouseEvent.MOUSE_DOWN, showAchievements ); addChild( tf ); tf = createButton( "getFriends" ); tf.x = 10; tf.y = 170; tf.addEventListener( MouseEvent.MOUSE_DOWN, getFriends ); addChild( tf ); } private function createButton( label : String ) : TextField { if( !buttonFormat ) { buttonFormat = new TextFormat(); buttonFormat.font = "_sans"; buttonFormat.size = 14; buttonFormat.bold = true; buttonFormat.color = 0xFFFFFF; buttonFormat.align = TextFormatAlign.CENTER; } var textField : TextField = new TextField(); textField.defaultTextFormat = buttonFormat; textField.width = 140; textField.height = 30; textField.text = label; textField.backgroundColor = 0xCC0000; textField.background = true; textField.selectable = false; textField.multiline = false; textField.wordWrap = false; return textField; } private function checkSupported( event : MouseEvent ) : void { feedback.text = "GameCenter.isSupported:\n " + GameCenter.isSupported; } private function authenticateLocalPlayer( event : MouseEvent ) : void { feedback.text = "GameCenter.authenticateLocalPlayer():"; try { GameCenter.localPlayerAuthenticated.add( localPlayerAuthenticated ); GameCenter.localPlayerNotAuthenticated.add( localPlayerNotAuthenticated ); GameCenter.authenticateLocalPlayer(); } catch( error : Error ) { GameCenter.localPlayerAuthenticated.remove( localPlayerAuthenticated ); GameCenter.localPlayerNotAuthenticated.remove( localPlayerNotAuthenticated ); feedback.appendText( "\n " + error.message ); } } private function localPlayerAuthenticated() : void { GameCenter.localPlayerAuthenticated.remove( localPlayerAuthenticated ); GameCenter.localPlayerNotAuthenticated.remove( localPlayerNotAuthenticated ); feedback.appendText( "\n localPlayerAuthenticated" ); } private function localPlayerNotAuthenticated() : void { GameCenter.localPlayerAuthenticated.remove( localPlayerAuthenticated ); GameCenter.localPlayerNotAuthenticated.remove( localPlayerNotAuthenticated ); feedback.appendText( "\n localPlayerNotAuthenticated" ); } private function getLocalPlayer( event : MouseEvent ) : void { feedback.text = "GameCenter.localPlayer:"; try { if( GameCenter.localPlayer ) { feedback.appendText( "\n id: " + GameCenter.localPlayer.id + "\n alias: " + GameCenter.localPlayer.alias ); } else { feedback.appendText( "\n null" ); } } catch( error : Error ) { feedback.appendText( "\n " + error.message ); } } private function getPlayerScore( event : MouseEvent ) : void { feedback.text = "GameCenter.getLocalPlayerScore()"; try { GameCenter.localPlayerScoreLoadComplete.add( localPlayerScoreLoaded ); GameCenter.localPlayerScoreLoadFailed.add( localPlayerScoreFailed ); GameCenter.getLocalPlayerScore( "HighScore" ); } catch( error : Error ) { GameCenter.localPlayerScoreLoadComplete.remove( localPlayerScoreLoaded ); GameCenter.localPlayerScoreLoadFailed.remove( localPlayerScoreFailed ); feedback.appendText( "\n " + error.message ); } } private function localPlayerScoreLoaded( leaderboard : GCLeaderboard ) : void { GameCenter.localPlayerScoreLoadComplete.remove( localPlayerScoreLoaded ); GameCenter.localPlayerScoreLoadFailed.remove( localPlayerScoreFailed ); feedback.appendText( "\n localPlayerScoreLoadComplete" ); feedback.appendText( "\n board category : " + leaderboard.category ); feedback.appendText( "\n board title : " + leaderboard.title ); feedback.appendText( "\n rankMax : " + leaderboard.rangeMax ); if( leaderboard.localPlayerScore ) { feedback.appendText( "\n playerId : " + leaderboard.localPlayerScore.playerId ); feedback.appendText( "\n rank : " + leaderboard.localPlayerScore.rank ); feedback.appendText( "\n value : " + leaderboard.localPlayerScore.value ); feedback.appendText( "\n formattedValue : " + leaderboard.localPlayerScore.formattedValue ); feedback.appendText( "\n date : " + leaderboard.localPlayerScore.date ); } else { feedback.appendText( "\n no score for local player" ); } } private function localPlayerScoreFailed() : void { GameCenter.localPlayerScoreLoadComplete.remove( localPlayerScoreLoaded ); GameCenter.localPlayerScoreLoadFailed.remove( localPlayerScoreFailed ); feedback.appendText( "\n localPlayerScoreLoadFailed" ); } private function submitScore( event : MouseEvent ) : void { feedback.text = "GameCenter.submitScore()"; try { GameCenter.localPlayerScoreReported.add( scoreReportSuccess ); GameCenter.localPlayerScoreReportFailed.add( scoreReportFailed ); GameCenter.reportScore( "HighScore", 180 ); } catch( error : Error ) { feedback.appendText( "\n " + error.message ); } } private function scoreReportFailed() : void { GameCenter.localPlayerScoreReported.remove( scoreReportSuccess ); GameCenter.localPlayerScoreReportFailed.remove( scoreReportFailed ); feedback.appendText( "\n localPlayerScoreReportFailed" ); } private function scoreReportSuccess() : void { GameCenter.localPlayerScoreReported.remove( scoreReportSuccess ); GameCenter.localPlayerScoreReportFailed.remove( scoreReportFailed ); feedback.appendText( "\n localPlayerScoreReported" ); } private function submitAchievement( event : MouseEvent ) : void { feedback.text = "GameCenter.reportAchievement()"; try { GameCenter.localPlayerAchievementReported.add( achievementReportSuccess ); GameCenter.localPlayerAchievementReportFailed.add( achievementReportFailed ); GameCenter.reportAchievement( "started", 1 ); } catch( error : Error ) { feedback.appendText( "\n " + error.message ); } } private function achievementReportFailed() : void { GameCenter.localPlayerAchievementReported.remove( achievementReportSuccess ); GameCenter.localPlayerAchievementReportFailed.remove( achievementReportFailed ); feedback.appendText( "\n localPlayerAchievementReportFailed" ); } private function achievementReportSuccess() : void { GameCenter.localPlayerAchievementReported.remove( achievementReportSuccess ); GameCenter.localPlayerAchievementReportFailed.remove( achievementReportFailed ); feedback.appendText( "\n localPlayerAchievementReported" ); } private function showLeaderboard( event : MouseEvent ) : void { feedback.text = "GameCenter.showStandardLeaderboard()"; try { GameCenter.showStandardLeaderboard(); } catch( error : Error ) { feedback.appendText( "\n " + error.message ); } } private function showAchievements( event : MouseEvent ) : void { feedback.text = "GameCenter.showStandardAchievements()"; try { GameCenter.showStandardAchievements(); } catch( error : Error ) { feedback.appendText( "\n " + error.message ); } } private function getFriends( event : MouseEvent ) : void { feedback.text = "GameCenter.getLocalPlayerFriends()"; try { GameCenter.localPlayerFriendsLoadComplete.add( localPlayerFriendsLoaded ); GameCenter.localPlayerFriendsLoadFailed.add( localPlayerFriendsFailed ); GameCenter.getLocalPlayerFriends(); } catch( error : Error ) { GameCenter.localPlayerFriendsLoadComplete.remove( localPlayerFriendsLoaded ); GameCenter.localPlayerFriendsLoadFailed.remove( localPlayerFriendsFailed ); feedback.appendText( "\n " + error.message ); } } private function localPlayerFriendsLoaded( friends : Array ) : void { GameCenter.localPlayerFriendsLoadComplete.remove( localPlayerFriendsLoaded ); GameCenter.localPlayerFriendsLoadFailed.remove( localPlayerFriendsFailed ); feedback.appendText( "\n localPlayerFriendsLoadComplete" ); if( friends.length == 0 ) { feedback.appendText( "\n player has no friends" ); } else { for each (var friend : GCPlayer in friends ) { feedback.appendText( "\n id : " + friend.id + ", alias : " + friend.alias ); } } } private function localPlayerFriendsFailed() : void { GameCenter.localPlayerFriendsLoadComplete.remove( localPlayerFriendsLoaded ); GameCenter.localPlayerFriendsLoadFailed.remove( localPlayerFriendsFailed ); feedback.appendText( "\n localPlayerFriendsLoadFailed" ); } private function animate( event : Event ) : void { shape.x += direction; if( shape.x 320 ) { direction = -1; } } } }
RT @as3gamegears http://t.co/TtETynwY #as3 #flash #gamedev: New: ANE-Game-Center (Air Native Extension for Appl… http://t.co/qpDREhg4
how do you implement this into a game made in flash builder 4.5… do you have a video tutorial ?
I’ve found this video and this Adobe post. I hope it helps.
There’s how to get the player’s already completed achievements?
Yes, there is. According to the docs, you can call
GameCenter.showAchievements();
to show Apple’s standard achievements view.You can also call
GameCenter.getAchievements();
to asynchronously get the achievements. For more info, check the ANE docs.Very very handy! Thanks!
You’re welcome!