問題タブ [ccscene]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
364 参照

cocos2d-iphone - cocos2d シーンの割り当て解除と ccb ノード

CCSceneメソッドを使用して CocosBuilder テンプレートから作成されたノードを 1 つだけ含む単純なものがあります[CCBReader nodeGraphWithFile:]

これまでのところ、シーンのメソッドで ccb ノードを解放していませんでしたdealloc。しかし、割り当てプロファイラーで、シーンを数回プッシュ/ポップするとメモリリークが発生することに気付きましたCCDirector

releaseこのメモリ リークは、シーンのdeallocメソッド内のノードを実際に使用すると解消されます。

ノードを保持/初期化していないのに、なぜノードを解放する必要があるのですか? 私が誤解したことがありますか?

0 投票する
1 に答える
145 参照

replace - 同じCCSceneが2回交換された後、ゲームがクラッシュする

それは少し単純な問題ですが、私はそれを理解することができませんでした。

1->アプリケーションの開始(MainMenuシーンを使用)

2->開始(サブレベルのシーンが置き換えられます)

3->最初のレベルを選択します(Level1Sceneが置き換えられます。ゲームが開始されます。)

4->メインメニューに戻ります。(MainMenuシーンが置き換えられます)

5->開始(サブレベルのシーンが置き換えられます)

6->第1レベルを選択

7->クラッシュ。

box(32842,0x3f5c9d98)malloc:*オブジェクト0x4bed44のエラー:解放されたオブジェクトのチェックサムが正しくありません-オブジェクトは解放された後に変更された可能性があります。*デバッグするmalloc_error_breakにブレークポイントを設定します

シーンaからbを置き換えると、リリースされますか?

私の知る限り、pushSceneだけがシーンをメモリに保持します。

シーンとレイヤーは自動解放オブジェクトです。replaceSceneが呼び出されたときに解放する必要があります。(シーンの置き換え中に前のシーンが解放された場合。)

0 投票する
1 に答える
153 参照

ios - ViewController は CocosBuilder によって作成された CCScene のインスタンス メソッドにアクセスしますか?

例を挙げて説明します。

たとえば、CocosBuilder でScene.ccbi とそのカスタム クラスSceneクラスを作成しました。

Scene header内で、メソッドを定義しました:

AppDelegate /ViewControllerで、CCBReader を呼び出して CCScene を作成します。

つまり、Scene.m にはそのインスタンスがあります。

この時点で、AppDelegate/ViewController は Scene のインスタンス メソッドにどのようにアクセスできますか? たとえば、ViewController 内:

ありがとうございました!

0 投票する
2 に答える
394 参照

cocos2d-iphone - 1つのシーンでのCCLayer間の通信

別々の.mファイルで相互に通信する必要がある2つのCCLayerがあります

  • Level1.m(Level1 CCLayerを使用したCCScene)-タイル化されたマップとプレーヤーのスプライトを保持します
  • HUDLayer.m(Level1.mの上部へのリンク)-すべてのボタンを保持します

HUDLayer.mで次のコードを取得して、Level1.mのプレーヤースプライトと通信するにはどうすればよいですか?

私がこれに何日も立ち往生しているのを手伝ってください。少なくとも誰かが私を正しい方向に向けることができれば。ありがとう!

0 投票する
0 に答える
57 参照

iphone - HUD レイヤーから iAd を移動できないのはなぜですか?

広告を画面外に移動する機能を備えた iAd を含む HUD レイヤーがあります。このコードを使用して、私が持っているシーンの 1 つに HUD レイヤーを追加します。

hudLayer は、iAd クラス ファイル名です。

別のシーンに移動すると、別のシーンに HUD レイヤーを追加しても、HUD レイヤーはそのまま残ります。このコードで iAd の位置を移動して、この問題を解決しようとしました。

シーンに追加した HUD レイヤーには、シーンを別のシーンに切り替える関数を呼び出すボタンがあり、次のコードを使用して上記の関数を呼び出します。

関数は呼び出されますが、iAd は動きません。HUD レイヤーの init 関数から同じ関数を呼び出してみましたが、iAd は移動しますが、別のシーンで呼び出しても移動しません。

0 投票する
2 に答える
246 参照

objective-c - 間違った向きで読み込まれた Cocos2d シーン

いくつかの UIKit ビューの上に cocos2d シーンを作成しようとしています。cocos2d 2.0 CCDirector は UIViewController のサブクラスであることを理解しているので、それをサブビューとして追加するだけです。

appDelegate でシーンへの切り替えを処理するためにこの関数を作成しました (現在、http://www.raywenderlich.com/4817/how-to-integrate-cocos2d-and-uikit に続く MainWindow.xib のデリゲートです)。 :

だから私はこのコードからかなり欠けています。しかし、これで、 http://i.stack.imgur.com/pubWE.pngをロードするシーンに似たものが得られます

私の質問は:

1: 正しい方向に進んでいる場合

2: その場合、次のステップはシーンの向きを手動で調整することですか?

2.1: どうすればいいですか :)

0 投票する
0 に答える
187 参照

iphone - CCTransition 中に CCScene を置き換えることは可能ですか?

実行中にonで呼び出すreplaceScene:と、使用中のどのシーンでも呼び出されず、また、この操作の後、どのシーンも表示されなくなります。CCSceneCCDirectorCCTransitiondealloc

サンプルプロジェクトへのリンクはこちら

この動作を取得する最短の方法は、そのような方法です(問題を再現することを意味します):

私の質問は: がCCTransitionによって実行されているときにシーンを置き換える実行可能な方法はありCCDirectorますか?

CCDirectorシーン置換の終了を通知するデリゲート コールバックを実装しましたが、実行中に iPhone のホーム ボタンを押しても、これは呼び出されませんCCTransition

答えが「いいえ」の場合、下記の目標を達成するための cocos2d-iphone の方法はありますか?

applicationDidEnterBackground元々、この問題は、 (バックグラウンド タスクとして) または の場合に「ロード シーン」を追加したかったときに発生applicationWillEnterForegroundしましたが、バックグラウンド実行とは関係ないことに気付きました。私の最終的な目標は、ゲームが Game Center 認証ハンドラーが呼び出されるのを待っている間、シームレスなユーザー エクスペリエンスを提供することです。バックグラウンドから復帰したアプリの最初から表示される「ロード シーン」で十分です (ユーザー インタラクションを防止するだけでなく、さまざまな方法で実行できますが、以前のゲーム UI はユーザーに表示されません)。ただし、このソリューションは上記の問題の影響を受けやすくなります。ユーザーがシーンの移行中にホーム ボタンをタップすると、ゲームをバックグラウンドから移動した後に非常に奇妙な画面が表示されます。

編集: さらに調査した結果、 中にシーンを置き換えるための満足のいく解決策が見つかりませんでしたが、@LearnCocos2D (Steffen に感謝) が提案したように、呼び出すのではなく、可視の に「読み込み」を追加することでCCTransition上記の問題を解決しました。これは完全ではありません。シーンの遷移中に子を追加すると、奇妙な結果が発生したときに (実行時間の意味で) 狭いウィンドウがまだあるためです。ただし、シーンを置き換えるよりははるかに優れています。新しいデバイスは非常に高速であり、3GS よりも高速なデバイスで「ホーム ボタン」をクリックする問題を再現するのは非常に難しいため、3GS でゲームをテストする場合にのみ関係があることを述べたいと思います。replaceSceneCCLayerCCSceneCCTransition

0 投票する
2 に答える
333 参照

ios - UIViewControllerが表示されている間にCCSceneを置き換える方法は?

私には 2 つCCScenesの があります。それらを A と B と呼びましょう。シーン A にいるときは、UIViewControllerビデオ プレーヤーでインスタンスを提示します。次に、その UIViewController からシーン B に移動します。これがその方法です。

私が必要とするのは、私のUIViewController. しかし、残念なことに、私はいつもシーン A に一瞬連れて行かれ、その後にシーン B が表示されます。私が理解している限りでは、viewController が から削除された後にのみ機能するようにUIViewControllerブロックを表示しています。そのため、viewController がまだオンになっている間に非同期に置き換える方法を見つける必要があります。何か案は?Cocos2DCCDirectorCCScene