問題タブ [cocosbuilder]
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.
cocos2d-iphone - 実行時の cocos2d Mac のシャットダウンと起動
NSWindow
テスト目的で「cocos Player」を起動するコンテンツ エディタを構築しています。ユーザーは、一部のコンテンツをテストしてから、ウィンドウを閉じることができます。
そのため、cocos をシャットダウンして、同じアプリ内で再起動できるようにする必要があります。
CC_MAC_USE_DISPLAY_LINK_THREAD
スレッド モデルを使用すると、すべてが機能します。これを機能させるには、修正を加える必要がありましたCCDirectorMac
。を使用するときにandによって nil に設定されていないため、 toCCDirectorMac | stopAnimation
を設定する必要がありました。_runningThread
nil
#if
#elif
CC_MAC_USE_DISPLAY_LINK_THREAD
とにかく、ディレクターを「終了」して、後で問題なく再起動できるようになりました。
私の質問は次のとおりです。cocos2D をときどき使用する AppKit エディターを構築している場合CC_MAC_USE_MAIN_THREAD
、ドキュメントで提案されているスレッド モデルは実際にはどのようなものでしょうか?
私が使用するCC_MAC_USE_MAIN_THREAD
と、次の行にハングインします。stopAnimation
CVDisplayLinkStop(displayLink);
メインスレッドは問題なく、ツールのスレッド化の問題を回避できると思います。パフォーマンスは問題ではありません。cocos2d をシャットダウンして再起動するサンプル コードを見つけることができませんNSWindow
。
シャットダウン/再起動する私の手順は次のとおりです。
- 電話
[[CCDirector sharedDirector] end]
- これは
stopAnimation
- 次に、最初に行ったのと同じ方法で cocos2d を再初期化します
Mac デスクトップ アプリのスレッド モデルに関するアドバイスと、CVDisplayLinkStop
ハングする理由を教えてください。
前もって感謝します。
cocos2d-x - CocosBuilder のカスタム CCTableViewCell で CCBMemberVariableAssigner コールバックが機能しない
私の目標は、CocosBuilder を介して CCTableViewCell を設計し、CCBReader を介してロードすることです。
これまでの私の手順:
cocosbuilder に新しい非フルスクリーン CCNode TestCell.ccbを追加し、ルートのカスタム クラスを に設定し、TestCell
ccSprite をルートの子として追加し、doc-root-varを に設定しましたbg
。
私の問題:ローダーTestCellLoader
とセルを実装した後TestCell
、コールバック関数
TestCell::onAssignCCBMemberVariable
はまったく呼び出されません。
私が試したこと:これまでのところ、 a のCCLayerLoader
代わりに aを使用することはCCNodeLoader
うまくいきました。これは私が a を使用するのは初めてCCNodeLoader
なので、重要なポイントを逃した可能性があります。
ありがとう、チャオ!ベン
コードは次のとおりです。
TestCellLoader.h
TestCellLoader.cpp
TestCell.h
TestCell.m
iphone - cocos2d/cocosbuilder のバグかどうか: タイムライン 0(sequenceId) が自動的に実行されるのはなぜですか?
ここに私のツールがあります:CocosBuilder-2.1/CCBReader-2.1/cocos2d-iphone-2.0
私が作成したTestNode.ccb
(ルートオブジェクトはCCNodeです)、その中に2つのタイムライン@"t0name"
(長さ2秒)と(長さ2秒)を作成し@"t1name"
、ルートノードはカスタムクラスに設定されていますTestNode
私が作成しましたTestNode.h
:
そしてここにあるTestNode.m
:
また、メイン レイヤー ( TestScene.h/.m
) もあります。このシーンではCCNode
、何か他のものを追加します...
通常の場合:
メイン レイヤーのonEnter(
) に、playAnimation のインスタンスを追加しTestNode
て呼び出します。上記のコードに従って、指定されたタイムライン@"t0name"
が永久に再生され、実際に起こったことは私の仮定と同じです。
奇妙なケース: メイン レイヤーのonEnter()
に のインスタンスを追加してTestNode
を呼び出しplayAnimation
、関数をスケジュールします[self schedule:@selector(changeTestNodeCondition) interval:1.0];
this function( changeTestNodeCondition
)TestNode
の条件を YES に設定しただけです。上記のコードによれば、@"t0name"
wil という名前のタイムラインが 1 回再生されます (t0'
長さは 2 秒です) 。 )、その後、指定されたタイムライン@"t1name"
が 1 回再生され、コンソールに「t1played」と出力され、すべてが停止しますが、何が起こったかは次のとおりです。
@"t0name"
一度だけ再生されたという名前のタイムライン@"t1name"
一度だけ再生されたという名前のタイムライン- コンソール出力「t1played」
@"t0name"
再び再生されたという名前のタイムライン- コンソール印刷 "t1played" 再び
なぜstep4が起こったのですか?原因completedAnimationSequenceNamed:(NSString *) name
が再度呼び出され、コンソールに "t1played" が再度表示されます (手順 5)
、両方TestNode.ccb
のタイムラインにチェーンされたタイムラインがなく、両方のタイムラインにチェックが入っていない自動再生、@"t0name"
ありsequenceId 0
、@"t0name"
ありsequenceId 1
、自動再生ありtimeline 0
??? どうして???
別の興味深い実験を行いました: タイムライン@"t0name"
シーケンス ID を 1 に変更し、タイムライン@"t1name
" シーケンス ID を 2 に変更 (任意のテキスト エディターを使用して ccb ファイルを直接編集) すると、次のことが起こります。
- @"t0name" という名前のタイムラインが 1 回再生されました
- @"t1name" という名前のタイムラインが 1 回再生されました
- コンソール出力「t1played」
- console print "t1played" 何度も何度も...デッドループ
CCAnimationManager
この場合は再生しようと思いますtimeline 0
がtimeline 0
、そこにないのでアニメーションは見られませんが、「再生」操作が呼び出されてからcompletedAnimationSequenceNamed:(NSString *) name
呼び出されます!
iphone - Cocos2D / CocosBuilder テクスチャ アトラスのメモリ使用量
私は Cocos2D と CocosBuilder を初めて使用し、メモリの使用に関していくつか質問があります。
1) CocosBuilder (または Cocos2D) で、同じシーン内のすべての CCSprite オブジェクトに同じテクスチャ アトラス (スプライトシート) を使用すると、スプライトごとに個別のテクスチャよりもメモリ使用量を節約できますか? 正確には、1 つの 4k*4k テクスチャを使用する場合、ゲームは 1 つのテクスチャ アトラス (例: 4k * 4k * 32 ビット) だけのメモリを必要としますか?
2) メモリを節約するために、スプライトごとに異なるテクスチャ モードを使用できますか? たとえば、背景画像にアルファなしモードを使用します。つまり、Cocos2D は同じシーンで異なるテクスチャ モードを処理できますか?
3) シーンに約 100 個のオブジェクト、合計 3 つのシーンがあるゲームを実装する必要があります。現在、同じシーンのすべてのオブジェクトが同じスプライトシートを使用しています。それでも、シーンを数回切り替えると、ゲームがクラッシュします。me-warning メッセージを受け取るたびに。この問題を解決する最善の方法は何ですか? これらのキャッシュをすべてダンプしようとしましたが、それでもクラッシュしました。
どうもありがとう!
cocos2d-iphone - CocosBuilder が既存のプロジェクトにファイルを追加する
既存の CocosBuilder プロジェクトがあり、それに画像 (png) を追加したいと考えています。プロジェクトディレクトリに画像を追加しようとしましたが、プロジェクトには表示されませんが、新しいディレクトリには表示されます。また、プロジェクトに直接ドラッグ アンド ドロップしてみました。
これは可能ですか?それを行う方法を見つけることができないようです。ありがとう!
cocos2d-iphone - CCNode の特定のインスタンスをタッチに反応させる
私のプロジェクトでは、CocosBuilder で Cocos2D を使用しています。いくつかのキャラクターを子 CCSprites などを持つ CCNode のサブクラスに割り当てました。
これらの CCNodes がタッチに反応するようにします。たとえば、それらのいずれかに触れると、状況に応じたアニメーションが再生されます。ノードをタッチに反応させる方法(または、スプライトに触れたかどうかを検出するレイヤーをタッチに反応させる方法)だけを知りたいのですが、アニメーション部分は問題ありません。
何か案は?それは素敵だ。
サム