我的标签不会更新并导致我的游戏崩溃

时间:2016-02-18 00:02:34

标签: xcode swift cocos2d-iphone spritebuilder

我对swift和编码很新,所以任何帮助都非常感谢!我有一个CCLabelTTF作为各种分数守护者,每次你通过和障碍时应该更新。碰撞正在运行,我的控制台中的点似乎正在增加,但我试图用它来更新屏幕上显示的实际CCLabelTTF:

.controller('ProfileUpdateCtrl', function($http, $state, $http, $cordovaOauth, $stateParams, $rootScope, $scope, UserFac, UploadFac) {  

id = $stateParams.id;    

$scope.user = {}; 

UserFac.getUser(id).success(function(data) {  
   $scope.users = data; 
}); 

$scope.editprofile = function(user) {  

   username = user.username;  
   password = user.password; 
   firstname = user.firstname; 
   lastname = user.lastname; 
   birthday = user.birthday;
   hometown = user.hometown;  
   email = user.email;   


   mark = { hometown: hometown, username: username, password:password, email:email, firstname:firstname, lastname:lastname,birthday:birthday }; 

   setmark = angular.toJson(mark);   

   UserFac.updateUser(id, setmark); 

   //reload to current controller 
   $state.reload({'reload':true});


}

//Remove Profile Image from Database. 
$scope.removepropic = function(user) { 

  blank = []; 

  mark = { imageurl:blank }; 
  setmark = angular.toJson(mark); 
  UserFac.updateUser(id, setmark);  
}

//Image Uploading 
$scope.stepsModel = [];

$scope.imageUpload = function(element) { 

    var reader = new FileReader();
    reader.readAsDataURL(element.files[0]);  

    file = element.files[0]; 

    mark = { imageurl:element.files[0].name }; 
    setmark = angular.toJson(mark); 

    //upload image to AWS 
    UploadFac.sendImg(file); 

    //send information to database
    UserFac.updateUser(id, setmark); 

    console.log(element.files[0]);   
}

//Terminate Profile
$scope.deleteprofile = function() { 
   UserFac.deleteUser(id); 
   $state.go('home'); 
}
})

我使用SpriteBuilder和Xcode,如果有帮助的话。对不起,如果这是一个愚蠢的问题!

编辑:这是我的scoreLabel声明:

    func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, goal: CCNode!) -> Bool {
    goal.removeFromParent()
    points++
    scoreLabel.string = String(points) //the line appearing to cause the crash 
    return true
}

2 个答案:

答案 0 :(得分:0)

根据您的标签声明,这可能意味着您的标签为func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, goal: CCNode!) -> Bool { goal.removeFromParent() points++ if scoreLabel != nil { scoreLabel.string = String(points) print("scoreLabel exists") } else { print("scoreLabel is nil") } return true } 。确保您要添加标签。

要测试它,请将代码更改为:

viewDidLoad:

如果在控制台中打印“scoreLabel is nil”,则测试确认您的标签不存在。

修改

你说你从来没有初始化标签,所以在适当的函数中添加这个代码(scoreLabel = CCLabelTTF(string: "", fontName: "FONT_NAME_HERE", fontSize: FONT_SIZE_HERE) 或cocos-2d中的一些等价物 - 我不熟悉它):

{{1}}

答案 1 :(得分:0)

我明白了!我在spriteBuilder中建立了一个代码连接,我猜这个代码连接没有保存,所以它得分没有任何问题。谢谢你们的帮助:)