問題タブ [cclayer]
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 ゲーム レイヤーを実行するとぎくしゃくし、replaceScene を同じシーンにすると滑らかになる
n't私のゲーム シーンは、replaceScene を使用してレベル選択シーンから実行され、レベル番号が渡されます。ゲーム レイヤーは plist からデータをロードし、ワールド空間にオブジェクトを作成します (box2d ボディを持つ CCSprite サブクラス)。レベルがプレイされている間、ヒーロー キャラクターは画面の中央にとどまります。これを行うためにレイヤー位置を調整し、移動速度に基づいてズームインおよびズームアウトするレイヤー スケールを調整します。
例えば:
問題は、最初の数秒間だけでなく、速度が上がり、レイヤーがズームアウトすると、最初のレベル実行時に動きがぎくしゃくすることがよくあることです。ただし、ユーザーがレベルを再起動すると (ボタンは replaceScene を実行します)、置換レベルの移動は高速であっても完全にスムーズです。
バッチノードを使用しており、スプライト イメージをフレーム キャッシュに保存しています。レベル選択シーンでフレームキャッシュの設定やサウンドのプリロードをしてみましたが変わりません。レベル間でキャッシュを消去して、再起動したレベルで同じ動作を実行できるかどうかを試してみましたが、何もしませんでした。
これを引き起こす原因と、それを排除する方法を誰かが提案できますか.
ありがとう!
cocos2d-iphone - cocos2dのボタンをタップした後にのみソリッドサークル/ドットを描きたい
私はcocos2dを見始めたばかりで、学ぶことに非常に興味があります。
基本的には、画面に触れるところに小さな実線の円(半径20の周りのドットのような)を描きたいだけで、ボタンを押した後にのみ有効になります。これどうやってするの ?
ボタンにはを使用してCCMenuItem
います。これがコードです。
このボタンだけをタップした後、画面のどこに触れても円が欲しいです。
これで私を助けてください。私は多くのことを探して試しましたが、このことについての明確な知識やアイデアを得ることができませんでした。
あなたの提案は大歓迎です。
ありがとうございました 、
cocos2d-iphone - cocos2d(Kobold2D)CCLayerでピンチ/ズームする方法
私はcocos2dのCCLayerに標準のピンチ/ズームを実装しようとしていますが(Kobold2Dジェスチャ認識機能を使用)、部分的にしか成功していません。
以下は、ピンチポイントが動かない限り、ピンチ/ズームを機能させる私のコードです。ただし、レイヤーの1つのポイントを拡大してから、指を離して別のポイントをさらに拡大すると、レイヤーが瞬時にジャンプします。単純に元の場所からスムーズにズームインするのではなく、最初から2番目のポイントにズームインした場合のレイヤーの場所にジャンプします。
私が間違っていることを確認できますか、それともCCLayersでこの仕事をする既存の単純なピンチ/ズームアルゴリズムを見逃したことがありますか?
注意:ignoreAnchorInPositionのデフォルト(YES)値を残しました。また、開始時にself.scalePrePinch = 1.0f
layout - 複数の CCSenes で共通のヘッダーとフッター CCLayers を共有し、更新可能にする
私の cocos2d ゲームでは、すべてのゲーム レイヤーに表示される共通のヘッダーとフッターを共有する必要があります。
ヘッダーにはキャッシュやスプライトなどが含まれますが、フッターにはさまざまなゲーム シーン間を移動するための CCMenuItem ボタンが含まれます。
ヘッダー/フッターは、表示されているすべてのものの上に表示されるように、現在のシーン/レイヤーよりもわずかに高い Z インデックスに表示されます。
たとえば、ヘッダーは次のようになります。
現金: $5,000
フッターは、たとえば、次のように、スプライト ボタンを備えた CCMenu のように見えます。
ホーム | 市場
これは hud システムと見なされます。
今、私はこれに似た方法ですべてのシーンに HUD を追加しようとしました。
ただし、アサーション エラーが発生します。
* -[CCMenuItemSprite addChild:z:tag:] でのアサーションの失敗 ...
これは、別のシーンで HUD を再度追加できないために発生します。これは、私が cocos2d に対して持っている本当のフラストレーションです。
私が今までこの問題を解決できた唯一の方法は、CCLayer として a を持つ aBaseScene
を持ち、HUD
NSNotifications を使用して後続のすべての CCLayer をロードすることです。
コードは次のとおりです。
ヘッダー自体は非常に複雑ですが、簡単に言えば、次のような CCLabel があります。
これはうまく機能し、ゲームのすべての異なる部分間を移動でき、ヘッダー/フッターはすべてのシーンで共通です。
ただし、NSNotifications を使用してノードを変更すると、本当に頭痛の種になります。つまり、HUD 内のラベル (lblCash) を変更できないようで、これを解決する方法がわかりません。
たとえば、現金を減らす CCMenuItem をクリックすると、HUD ラベルは更新されません。
この問題を回避するために、別の NSNotification を使用してこれを解決します。複数の NSNotifications (ヘッダーの変更、ページの更新など) が必要な場合を除き、再送信できないため、アサーション エラーが発生します。
ヘッダーを更新するための NSNotification がある場合があり、その直後に別の NSNotification があり、ノードを提示したい別のノードにリダイレクトします。これもアサーション エラーを引き起こします。
全体があちこちで NSNotifications の混乱に陥っているように感じ、cosos2d に非常に不満を感じています。
私が試してみました:
ベース シーンで HUD (およびそのすべての子) を削除し、再度追加します。これによりアサーション エラーが発生し、実行できないようです。私はおそらくそれを間違ってコーディングしています
タグを使用して BaseScene/Layer をキャストし、HUD を取得して、そのようにラベルを更新しようとしています。
つまり、
何もしません。(基本レイヤー/シーンと hud レイヤーにはすべてタグがあります)。
どちらも、
キャストできない理由は、NSNotifications がコンテキストを変更したためだと思います。
このすべてが私をcosos2dに非常に苛立たせました。
私が欲しいのは、多くのシーンで共通のヘッダー/フッターだけです。大騒ぎせずにヘッダーのラベルを更新できるようにしたいのです。
この場合、共通のヘッダー/フッター CCLayer を共有し、ヘッダー/フッター内の要素を更新可能にするにはどうすればよいでしょうか?
大量の NSNotifications をあちこちに配置せずにこれを行う簡単な方法はありますか?
感謝を込めて。
cocos2d-iphone - UIButton が cocos2d CCLayer 内にあるときに、UIButton のドラッグが完了したことを確認するにはどうすればよいですか?
CCSprite と UIButton の両方を持つ cocos2d CCLayer クラスがあります。プレーヤーが画面上で UIButtons をタッチしてドラッグできるようにしたいと思います。指を離したときに、何らかのアクションを実行したいと考えています。
UIButton を作成してレイヤーに追加するコードのスニペットは次のとおりです-
UIButton を cocos2d レイヤー内に移動できます。私の質問は、UIButton から指が離されたことをどのように確認できますか?
PS/ Ray Wenderlich の cocos2d の UIView に関するチュートリアルと Steffen Itterheim による Learn Cocos2d Game Development を読みましたが、どちらも CCLayer 内の UIKit 要素へのタッチを管理する方法をカバーしていません。
ios - Cocos2D:異なるクラス間でイベントを送信する方法
私が読んだチュートリアルのほとんどは、HelloWorldクラスのCocos2Dの例のみを説明していますが、簡単なゲームの作成を開始したので、さまざまなクラスにイベントを送信する方法と、イベントが発生するたびに応答する方法を知る必要があります。 。
スプライトのさまざまなCCLayerをロードするCCLayerクラスであるGameSceneLayerがあります。
ただし、MainMenu CCLayerのSTARTスプライトに触れると、PlayerCCLayerからPLAYERスプライトにスポライトするようにしたいと思います。
次のようなGlobalVariables.hが必要だと思います。
したがって、STARTスプライトを押すと、gameStartが1に変更され、PLAYERスプライトのどこかにあります。
ただし、PLAYERスプライトが常にその情報を検索するようにコードを設定する方法がわかりません。
uiview - CCLayer cocos2d で UIView を使用するには?
cocos2d で CCVideoPlayer を使用して短いビデオを再生しています。最後に、ビデオの最後のフレームをキャプチャしています。UIView を使用して画面に表示しています。これは、CCLayer で描画しようとすると画像が表示されるためです。わずかに異なる色で。これは、cocos2d での描画方法が UIView での描画方法と異なるためだと思います。したがって、UIView を使用して画面に画像を保持する方法が必要であり、このビューの上にスプライトなどを描画できる必要があります。だから私の質問は、CCLayer を透明にして、画像を含む UIView が表示され、CCLayer を使用して画像の上に描画できるようにする方法はありますか? (PS 私は cocos2d v1.1.0-beta2b を使用しています)
cocos2d-iphone - 既存のレイヤーにドロップダウン メニュー効果を作成する方法は? Cocos2d
オプションボタンを備えたメインレイヤーがあり、ボタンを押すと、CCLayerColorレイヤーでpushSceneを呼び出しています。ドロップダウンメニューのようにしたいので、レイヤーは画面の半分のサイズですが、表示されると私が設定したトランジションでは、背景レイヤーが黒くなります。背景レイヤーを常に表示したままにしておきたいです。背景レイヤーの割り当てが解除されていることは確かです。
cocos2d-iphone - CCLayerColor とその子を特定の不透明度にフェードする方法は? Cocos2d
レイヤーとその子を特定の不透明度にフェードする方法を見つけようとしています。これが私がやっていることです。
しかし、これは何もしないようです。レイヤーが設定されている青色を確認するために背景スプライトを削除してからビルドすると、青色の背景が本来のとおりにフェードします。私の質問は、すべてのレイヤーの子をフェードアウトできないのはなぜですか?