我需要将几个变量从我的GameViewController传递给我的GameScene。
GameViewController:
##authInterceptorService.js##
(function ()
{
var injectParams = ['$rootScope', 'authService'];
function authInterceptorFactory($rootScope, authService)
{
factory = {};
factory.request = function(config)
{
var currentUser = authService.getCurrentUser(),
access_token = currentUser ? currentUser.access_token : null;
if(access_token)
{
config.headers.authorization = access_token;
}
return config;
};
factory.responseError = function(response)
{
if(response.status === 401)
{
$rootScope.$broadcast('unauthorized');
}
return response;
};
return factory;
};
authInterceptorFactory.$inject = injectParams;
angular
.module('rdApp.authModule')
.factory('authInterceptorService', authInterceptorFactory);
}());
##authService.js##
(function()
{
var injectParams = ['$http', 'store'];
function authFactory($http, store)
{
factory = {};
var urlBase = '-------';
var currentUser = null;
factory.setCurrentUser = function(user)
{
currentUser = user;
store.set('user', user);
return currentUser;
};
factory.getCurrentUser = function()
{
if(!currentUser)
{
currentUser = store.get('user');
}
return currentUser;
};
factory.signIn = function (user)
{
return $http.post(urlBase + '-----', user);
};
return factory;
};
authFactory.$inject = injectParams;
angular
.module('rdApp.authModule')
.factory('authService', authFactory);
}());
/*CONSOLE ERROR */
TypeError: authService.getCurrentUser is not a function
at factory.request (authInterceptorService.js:11)
at angular.min.js:119
at m.$eval (angular.min.js:134)
at m.$digest (angular.min.js:131)
at m.$apply (angular.min.js:134)
at angular.min.js:19
at Object.e [as invoke] (angular.min.js:38)
at d (angular.min.js:19)
at yc (angular.min.js:20)
at Xd (angular.min.js:18)(anonymous function) @ angular.min.js:107
GameScene - 具有上面列出的变量(idDefence)等。
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(size: view.frame.size) as GameScene? {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = false
skView.showsNodeCount = false
skView.showsPhysics = false
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
// pass game set-up variables
scene.idDefence = idDefence
scene.idAttack = idAttack
scene.tries = tries
scene.runs = runs
scene.teamShirt = teamShirt
skView.presentScene(scene)
}
}
这符合但是idDefence变量(从GameViewController正确打印为数字)不会传递给活动的GameScene并保持为0. GameScene代码:
class GameScene: SKScene, SKPhysicsContactDelegate {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// variables - set-up defenders
var idDefence = 0
...
任何帮助非常感谢
答案 0 :(得分:0)
您正在检查init(size:)
初始化程序中这些属性的值;在线上调用:
if let scene = GameScene(size: view.frame.size) as? GameScene {
...
}
此时,尚未运行从GameViewController设置属性值的代码;因此他们仍然有他们的默认值。
如果您在didMoveToView
的{{1}}方法中检查属性的值,则会看到它们都具有正确的值,因为GameScene
将在{{1}之后调用}}