グリッドアンドロイドの作成。 「Android」上でゲームを独自に作成する方法。 古いバージョンのグラフィックス

ゴロヴナ / コリズナ情報

Androidでゲームを作成するにはどうすればよいですか?











プログラミングの知識を伝達するあらゆるオペレーティング システム用のグリッドの作成。 Flappy Bird のような最も単純なゲームの場合は、基本を知っておく必要があります。 Android オペレーティング システムのお尻にグリッドがどのように作成されるかを見てみましょう。

ザバンテージバットプログラミング

「Type-number」アプリケーションは、グループ内のリーダーボード テーブルへのアクセスを統合する方法を示します。 わかりやすくするために、横にあるメモとスクリーンショットのアイコンを強調表示できます。 あなたには、テスト時間中のプログラムへの署名またはプログラムのリリースに対して同じ証明書を獲得する責任があります。

  • 「はじめてのプログラムの作成」を配布しました。
  • Zrobіttse prihovanymの成果。
  • Zrobitse pokrokovymiはz 10 krogamiに達し、schobのブロックを解除します。
物理テストデバイスでゲームを実行するため。

ドヴィグン

スクリプト作成の最初のステップは、エンジンのインストールです。 Merezha には、さまざまな言語プログラムで書かれた非人間的なエンジンが搭載されています。 当然のことながら、有料モーターはより多くの機能を備え、より安定した作業が可能であり、大きなチャンスをもたらします。 Proteїhnyavartіstは素晴らしいかもしれません。 したがって、例として、コストのない LibGDX エンジンを取り上げます。

「別棟のロボット」を配布。 。 シナリオの軸、それが私のヴィコリストヴヴァタイムモです。 アセットをプロジェクトに追加するのはあなたの責任です。 メインvіdstezhuєのVіn、どのフレームが特定の瞬間に表示され、zbіlshuєyogopіdhіdnovlennya、yakshchovіdpovіdny時間が経過しました。 リストの末尾が先頭に達するとすぐに、リストの先頭が再び向きを変え、リストの先頭に再びレンダリングされます。

このインターフェースを見てみましょう。

1 つは初期化用で、開始時、またはスプライトが初期化された場合に呼び出されます。 友人は絵を描くこと、つまり心を正しくする方法の機能です。 残りの関数 - アニメーションを更新するためのアニメーション ストリームによって処理されるため、更新する関数全体。

Tsej dvigun は素晴らしい機会を見つけることができ、vikoristannyarosіyskoy movoyを指示することができます。 エンジンはマルチプラットフォームなので、新しい言語で作成すれば他のプラットフォームにもインストールできます。

プログラミング媒体

また、プログラミングの媒体の選択も重要です。 この用語では、gr と書かれているはずの機器を使用することができます。 LibGDX エンジンの場合、プログラミング環境は Exlipce になります。 スキル dvigun gr buv で Java プログラミングを書くと、プログラミングの途中をマスターするために、この言語でのプログラミング自体の知識という基本的なスキルを習得する必要があります。 基本がわかっていないので、基本を学ぶ必要があります。



このクラスはあまり実践的ではありませんが、一緒に取り組むことがより重要なクラスです。 ロボット全体が完成した状態で起動する機能。 今週は安定のために同期されています。 プライベートアニメーション。 これは、コリストヴァルニツキー現象を引き起こす方法の 1 つです。 ここで更新を接続し、アニメーション フローに反映させることができます。 いずれにせよ、それが何であれ、悪臭が空の関数で満たされるように、ロジックを破る必要はありません。

プロジェクトの作成

Android でゲームを作成するには、他のプラットフォームと同様に、最初にプロジェクトを作成する必要があります。 それは問題ではありません。 LibGDX フォルダーを開くには、フォルダー内のエンジンを解凍し、新しいワンメニュー ファイルで見つけるだけで十分です。 次に、「プロジェクトの作成」ボタンを押すと、プロジェクトを作成する最短の方法がわかります。 Grid のプラットフォームを選択し、プロジェクトに名前を付けましょう。 構成時には、プログラミング環境を配置する場所を指定する必要があります。 プロジェクトを立ち上げた本人は、明らかにそのようなやり方ではなかったと示唆するでしょう。 その後、プログラミングの途中に進み、ゲームの作成を開始できます。

残りの関心点は、サーフェスの作成または破壊です。 何らかの理由でプログラムがフォーカスを停止する場合があります。 コリストヴァッハが「ホームへ」ボタンを押すと、プログラムはスリープモードに入ります。 オペレーティング·システムより多くのフォアグラウンド プログラムのためにメモリをクリアします。 Іsnuyut などの理由だけでなく、最も豊富な食べ物もあります。 この変更により、汗がキャンバス上にアニメーションやペイントを蓄積しなくなり、キャンバスが磨耗しなくなるのは私のせいです。

目標の 1 つはスプライトの作成です。 コンストラクターは、リソース ID、リソース i、nareshti、deaki 時間の値の高さと幅を指定します。 値の数により、1 秒あたりのアニメーションの回数と描画のフレーム数が決まります。 ツイストして 1 つのアーチ スプライトから多数のアニメーションを作成し、これらのアニメーションのアニメーションの速度を向上させることができます。 メモリの多様性に関する Tse vplivaє、およびレンダリングの速度に関する vplyvaє。 「クローズドオクルージョン」画面に戻ります。 。 Gra、ヤク vy vikoristovuєte、ガラケーで schob grati。

実際のところ、Android 用の Gri を作成することは、それが他の OS であっても、プログラミングの基本を知らなければまったく不可能です。 しかし同時に、エンジンはますます美しくなり、右側からのみ自分の道を開始する静かな人々にとってワインを巻くのに役立ちます。 そんなdvigunのお尻もGame Makerです。 この記事では、エンジン全体と新しい方法でのゲームの作成について読むことができます。

私たちの時代のMayzheの肌の人々 携帯電話またはタブレットでゲームを構築します。 市場がそうなるのも不思議ではない モバイルゲーム人気とロックの残りの部分の所有権の向上を通じてzletіv。 すでにすでに推測されているように、今日、この種のスマートフォンを所有する人々は、それよりも多くの人々を持っていますが、これは、肌がこれらのモバイルゲームにアクセスできることを意味します。 モバイルゲームの市場で企業が成長するためにますます成長するのは、単に自社の機能を拡張できるためです。

たとえば、ゲーム機を買えない人は買うべきかもしれませんが、悪臭がする中、映画などのカードをチェックしている間、時間を潰すのは同じことです。 モバイル ゲームには次世代の典型的なプロット ラインやグラフィックスはありませんが、だからといってその悪臭が人気がないわけではなく、単にエキサイティングなだけではありません。 アイデアはシンプルで、この種の最初のものではありませんが、アートのスタイルはユニークで、ゲームプレイは最小限に抑えられており、今日最も人気のあるモバイル ゲームの 1 つを作成しました。 まず第一に、最初のゲームを開始します。自分が何をしたいのかを知る必要があります。

全部飲みます。
2012年の白樺の岩の近くのスペルのレッスン。 同時にyogoを公開しました。 与えられたリソース。 コードのコードは変更しないでください。あまりチップを入れすぎないようにお願いします(私自身もハマってしまいました)。 テキスト自体がレッスンとコードのコメントに追加されました。 メタ レッスンは、1 回のレッスンの枠組み内ではゲームのプレイ方法を学ぶことではなく、モバイル AIR の操作の基本を示すことです。 なぜ Android 自体で、なぜ iOS ではないのでしょうか? このレッスンを書いている時点では、もうワインはありませんでした。 Pіdiosすべてがそのように戦うのが実用的です、エールєdeyakіvіdminnostі、yakіについては、レッスンの他の部分に基づいて書かれています。
ラジウムのようなコメント、敬意、vkazіvkoy、ご容赦ください。

理論が足りません。

Adobe AIR を使用すると、iOS 用の ActionScript 3 および MXML を作成できます。 Android プログラム、koristuvachのyakіは、ネイティブなものからは決して考慮できません。 Їх、ネイティブ プログラムのように、自社ストアを通じてすべてを広めることができます アップルのソフトウェア AppStoreと グーグルプレイ店( もっとアンドロイド市場)。 AIR 3.2 Vinyl のバージョンから Stage3D をサポートします。 AIR ロボットの場合、Android 上のプログラムは AIR ランタイム アタッチメントにインストールする必要があります。そうしないと、キャプティブ ランタイムでコンパイルするときに環境が APK に組み込まれます。 この場合、デバイスに AIR ランタイムをインストールする必要はありません。

モバイルデバイスを使用する場合、ディスプレイの構造間の違いがより低く(他のデバイスではすでにєなど)、コンピュータモニタの方がより低く、物理的な寸法も大幅に小さいことを確認するのが安全です。 また、「ピクセルの物理的な拡張」や「ピクセルの列」と同様に、さまざまなグラフィック要素 (ボタン、画面上の文字) の拡張についても考慮する必要があることも理解できます。 科学全体が破綻しているので、レポートではこれについては触れません。
入力方法 - タッチスクリーン。 タッチ入力を処理するには、特別なサブダイアログ TouchEvent がありますが、マウスのサブディビジョンは正しく処理されます。 また、他にも特徴がありますので、それについてはレッスン時間の中でお知らせします。
もっと頑張ります ただのグループアンドロイド用。 її はスマートフォン、タブレット、その他の付属物で実行できます。
アビオニクスAIRєdeakіハードウェアおよびソフトウェアのロボット環境のサポート。
Android の場合、臭いは次のようになります。
- Android版 2.2 より良い。
- 最低周波数 550MHz の ARM7 アーキテクチャのプロセッサ。
- 最小 256 メガバイトの RAM。

どのようなグループを成長させようとしているのか分からず、直接撮影したくないでしょう。 アイデアを書き、ユニークなキャラクターを考え出し、さまざまなスタイルのフィクションで遊んで、グループをユニークにするゲームプレイの種類を考えるのに 1 時間を費やします。 適切な計画を立てるとゲームが台無しになる可能性があります。 全員、ビデオ 音響効果アートデザインにとって、人生はモバイルグレーの作成にとって重要かもしれません、人々がどのように知っているか。 モバイル ゴールは何千もあるので、NATO 内で目立つように自分で構築できるものを考えてください。

他のプラットフォーム用の Wimogs はここで見つけることができます。

レッスンには次のものが必要です。
- FlashDevelop 4.2;
- フレックス SDK 4.6;
- AIR SDK 3.5;
- グリーンソックの図書館;
- Android 用のアタッチメント。 エミュレータを使用することもできますが、それほどうるさくはありません。
- AIR Mobile デバイスへのインストール。

インタラクティブなパズルで遊んでみるのもいいかもしれません。 よく知っているものを作成します。 何を改善できるでしょうか? 食べ物をひねって、濡れたユニークな包装の背後にある大きなパズルに取り組み始めます。 ソフトウェアセキュリティを選択します。 まず最初に、どのパッケージを知る必要があるかをグループに伝えます。 ソフトウェアあなたはこの作品を勝ち取るつもりです。 このゲーム エンジンはモバイル小売業者の間で広く認識されており、高いグラフィック能力を備えている場合もあります。

このプログラムは、ゲームを市場に出すまでは完全に無料です。 引っ張ってグリを作ることについて全体を考えてみましょう。 明らかに、それはまだ曲がっていて、おそらく、あなたは創造することができません 折りたたみゲームあなただけが見ているように。 彼女は非常に有能で、モバイル小売市場で大きな力を獲得しています。 一人からチーム間の人気。 プログラミング言語を学びましょう。 その世界では、より協力的な世界に入ると、私のプログラムの知識が人生にとって重要であることが明らかになります。

バージョンはレッスンの公開時に示されています。 すでに є Flex SDK 4.8 ですが、本質的には同じ 4.6 です。 І s 4.8 FlashDevelop が私の RAM をボロボロにし始めています、くそー。 最も美しいヴィコリスト 残りのバージョン AIR SDK、スキンリリースに伴う新たな可能性の追加とお詫びの修正を行いました。 AIR SDK を Flex SDK フォルダーに解凍し、ファイルを置き換えて、Flex SDK を FlashDevelop に接続するだけです。

穂軸のためのVіdmіnneの場所。 計画の段階ではわかっていても、自分自身が目標を達成したいと思っていることはわかっていても、人生は重要です。 別のケースでは、配布の過程で pivdoroz で間違った選択が行われたことがわかります。 さて、携帯電話で何を始めるべきかアイデアがある場合は、すぐに試してみてください。 自分の使いやすい、自分のエンジンで動作する新しいプログラミング言語を選択して、作成を始めましょう。 歴史的に、ハードウェアとソフトウェアの生産性、導入方法の多様性、またはグラフィック サポートのいずれについて話しているかに関係なく、ゲームはテクノロジーを強力に推進してきました。

実行可能なものは何か。

ロビティは私に小さなグループです。 ヴォーンは前に進みながら姿を現します。スクリーンの上から人影が落ちてきます。 下にはプラットフォームがあり、tsі数字が目の前で休閑をしないようにチーを捕まえる必要があります。 これは 3 つの画面で構成されます。
- 背景、ロゴ、2 つのボタンを備えた汚いメニュー。 1 つはグリの穂軸のため、もう 1 つはプログラムからの終了のためです。
- ゲーム画面。 プラットホームを掃き、何が落ちるかを把握し、流量レベルのインジケーターを確認してポイントを獲得します。 І ボタンでメインメニューを終了します。
- メニューを終了するボタンと「その他の回数」のボタンで獲得したポイント数を表示する画面。

いくつかのスクリーンショット:

しかし、それが最も単純で最も失敗しやすいイゴールから金持ちイゴールのための最も複雑な融資に至るまで、それが成功の歴史になる可能性があることを示すことができます。 より多くの成功を収めたイゴールが、いくつかの素晴らしい目撃という形でのみ現れたとしても、1時間はかかります。 小売業者やブランドには素晴らしい才能がたくさんあります。 また、ゲーム プラットフォームのサービスやテクノロジーを作成するためのリソースもほとんどないため、優れた生産性の高いゲームの作成で何度も勝つことができます。

フロアおよびコンソール システムでは、小規模な独立系小売業者が独立してそのスペースに参入することは事実上不可能です。 入り口のハードルが高すぎる。 多くの場合、コリストヴァッハ床材のベースは大きくて多様であるため、あなたのニッチを知る機会がたくさんあるという事実があります。 そしてもう 1 つの理由があります。それは、携帯小売業者がサービスをレンタルする機会が、早期ではないにしても、より多くなっているということです。

始めましょう。

cob については、アタッチメントにインストールされている AIR を変更し、インストールされていない場合はインストールします。 補助ケーブルに接続するためのデバイスのドライバーもコンピューターにインストールします。

FlashDevelop を実行し、新しい AIR AS3 モバイル アプリ プロジェクトを作成します。 軸はプロジェクトの作成物のように見えます。

Google Play での側面図

これらがなければ、急速に変化する業界において携帯電話の流通は手頃な価格ではなくなってしまいます。 ゲーム エンジンは、ゲームの移植性を高め、構造を保護するだけでなく、ゲームやツールの設計でより拡張されたテンプレートをサポートし、テクスチャや均一性などのゲーム アセットの生成にも役立ちます。 ゲーム小売業者向けのサードパーティ ライブラリ: 小売業者は、自社のゲームをスパイするサードパーティ ライブラリを獲得できます。

  • ロズロブニキ: 入場料がこれほど安くなったのは初めてです。
  • 高価なコンパイラやライセンスの支払いは必要ありません。
あなたがバチティできるように、Igor の小売店は非個人的なツールを独自に注文することができます。

私の前にあるチョーミ・バチモ:

バッチ ファイルを削除するバット フォルダー:
- 証明書.batの作成 Android 用の自己署名証明書を作成するために必要です。 証明書がなければ、apk を入手できません。
- AirRuntime.bat をインストールする AIR ランタイムを次のように設定します Android アプライアンス%FLEX_SDK%\runtimes\air\android\device\runtime.apk から。 つまり、残りのバージョンは自分でインストールしてください アンドロイドプレイ店;
- Packager.batフラッシュドライブをapk(android)またはipa(ios)にパックします。
- SetupApplication.batプログラムのさまざまなパラメーター (証明書へのパス、そのパスワード、プログラムの呼び出しのみ) を置き換える。
- SetupSDK.bat FlexSDK へのパスを選択します。 自動的に割り当てられますが、VINが割り当てられていない場合は手動で登録する必要があります。 AndroidSDK へのパスも選択します。 実際に必要なのは次の 3 つのファイルだけです。 adb.exe, AdbWinApi.dllі AdbWinUsbApi.dll。 さらに、FlashDevelop 配布キットでは悪臭が排除されており、そのパスも自動的に登録されます。

オブジェクトモデルと仕様の作成

これにより、彼は主要なゲーム コードに集中できるようになり、koristuvach ochіkuyut など、ゲームの他の側面の開発に大幅な時間を追加することなく、すべてを行うことができます。 Tse nalashtuvannya により、あらゆる小売業者 (個人からハリウッド大作の予算を備えた優れたゲーム スタジオまで) が真の成功に到達できるようになります。 次に、より多くのリソースの借り換えによる行為を見てみましょう。

最も単純なグリをゼロから作成するために作成され、ステンドグラスのウィンドウ ショップを作成し、まるで本当に少し眠いものを作成できるかのように、機能の開発に多大なエネルギーを費やして、ユニークなチーのグループを作成できます。素晴らしい? ゲーム エンジンにより、ゲーム開発の技術的ニーズが軽減され、ゲーム開発者はゲーム メカニクスの詳細に集中できるようになります。 ゲーム エンジンのパワーにより、大幅にエネルギーを節約できます。 Igor の小売業者の多くはソング エンジンのソングライターのお気に入りになっており、Gris の小売業者の概要に記載されているゲーム エンジンが多数あることも珍しくありません。

フォルダーを持っている 置き場 swf ファイルのコンパイルを避けるため。
教皇庁において 証明書証明書に嘘があるかもしれない。
テカ アイコン復讐のアイコンセット。
2 つの標準フォルダー ライブラリі 送信元ライブラリとクラスの場合、それは明らかです。

ルートフォルダ:
- AIR プログラムの標準 アプリケーション.xml異なるプログラムパラメータを使用します。
- PackageApp.batプラットフォームとソフトウェア パッケージの種類を選択できます。 梱包を選択した場合。 私はフォルダーです 距離 apk または ipa;
- Run.bat補足事項を記入してください モバイルアタッチメントそこでヨガを行います。
- 2つのファイル AIR_Android_readme.txtі AIR_iOS_readme.txt指示付き。

Vykoristannya の良い vidomoy dviguna は、zusilly z テストを変更し、特定のプラットフォーム向けの最適化などの機能を提供できます。 ゲーム エンジンは、グリの小売店にとってどのような匂いがするかという点で大きく異なります。 それらからのdeyakіは、іgorの最新パッケージを促進し、下部ライブラリのサポートを確実にするためにіnshіを促進します。 Igrovіdvigunyは、悪臭が発音するものの外観からノイズを制御します。 多くの場合、悪臭には、さまざまなプログラムの作成、形式の変更、レベルの拡張、物理エンジンへの地図作成ツール、およびアニメーションの管理のためのツールが与えられます。

プロジェクトの設計。

Vіdkrivaєmo nalashtuvannyaプロジェクト プロジェクト/プロパティ、背景色を黒に変更します。 Dozvіlはmaєではないという意味です。 もっと正確に言いましょう。
AIR バージョンは 3.5 がインストールされています。 結果のパラメータは次のようになります。

ファイルを開く アプリケーション.xmlの新しい行で、AIR バージョンを 3.5 に変更します。

Vіdkrivaєmo nalashtuvannya AIR - プロジェクト/AIR アプリのプロパティ。 ウィンドウでタブに移動します 初期ウィンドウ。 誰が選んでも 非ウィンドウ プラットフォーム.
表示モードをポートレートに切り替えます。 І Vimikaєmo Auto Orient、ポートレート モードではグラの破片が少なくなります。 レンダリングモードが設定可能 CPUまた 直接。 Nalashtuvannya は次のようになります。


FlashDevelopに直接ファイルを与える Run.batそしてミンヤエモ行 デスクトップに移動の上 アンドロイドデバッグに移動。 別棟でプロジェクトをテストするために必要です。 ヤクシチョ・リシティ デスクトップに移動、プロジェクトはエミュレータ上で実行されます。

次に、証明書を作成する必要があります。 これがなければ、プログラムを .apk に圧縮することはできません。 やっちょフォルダ 証明書毎日プロジェクトで手動で作成します。 Bat ファイルは不明なフォルダーに到達できないため、これは重要です。 ファイルを実行する バット/CreateCertificate.bat(右クリック/実行)、教皇庁にて 証明書証明書は標準のパスワード「fd」で宣言されます。 Varto氏は、Android向けプログラムは有罪だが、証明書で署名されていると主張している。 私たちが生成したものなので、配布用の証明書のタイトルです。 どの段階でもヨゴだけで十分です。

greensock.com Web サイトのアーカイブにファイルがありません グリーンソックス.swc、ヨガをフォルダーに入れます ライブラリプロジェクトに接続されています (右クリック/ライブラリに追加)。

すべて直します。 プロジェクトの前に、グラフィックとアイコンが必要になります。 フォルダーを作る 資産アーカイブからグラフィックを配置し、アイコンも置き換えます。 それ以外の場合は、独自の類似物をペイントできます。

コードに移りましょう。

そして今、最も一般的で最も有名なのは、私たちがコードを書くことです。 クラシエグリはこんな感じです。

アイテムタイプ- オブジェクトの種類。 静かに、獣のスクリーンに落ちる
package constants ( /** * ゲームオブジェクトのタイプに割り当てるための静的定数。 * * @author illusor */ public class ItemType ( /** 汎用オブジェクト。接眼レンズに 1 つ追加します。 */ public static const GOOD:String = " goodItem "; / ** "非常に良い" オブジェクト。ポイントに 5 を加算します。 */ public static const VERY_GOOD:String = "veryGoodItem"; /** "悪" オブジェクト。)
画面タイプ- ティピスクリーン。 私たちはそれらを3つ持っています、そして悪臭はさらに詳しく説明されています
パッケージ定数 ( /** * 画面タイプに割り当てる静的定数 * * @author illuszor */ public class ScreenType ( /** メインメニュー */ public static const MAIN_MENU:String = "mainMenu"; /** ゲーム画面 */ public static const GAME_SCREEN:String = "gameScreen";/** ゲームスコア画面 */ public static const SCORE_SCREEN:String = "scoreScreen";))
ゲームイベント- ゲームサブスク
package events ( import flash.events.Event; /** * Game Pods. * * @author illusor */ public class GameEvent extends Event ( /** メニュー ボタンを使用してメイン メニューでゲームを終了します */ public static const EXIT_GAME :String = "exitGame"; /** プログラムの実行 */ public static const GAME_OVER:String = "gameOver"; public function GameEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) cancelable); ) publicオーバーライド関数 clone():Event ( return new GameEvent(type, bubbles, cancelable); ) public オーバーライド関数 toString():String ( return formatToString("GameEvent", "type", "bubbles", " cancelable", "eventPhase) ") ; ) )
さて、パッケージを見てみましょう 要素。 GR で勝利を収めたさまざまなグラフィック要素。

ボタン- ボタンクラス。 積み重ねた グラフィック画像そのテキスト。 2 つのスタンドがある場合があります: 押された/押されていない
パッケージ要素 ( import com.greensock.TweenLite; import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; import flash.events.TouchEvent; import flash.text.TextField; import tools.Bitmaps; import tools.Tools;/** * メニューやその他の領域に表示するボタンのクラス String;/** @private ボタンの背景用ビットマップ */ private var buttonImage:Bitmap;/** * ヒアリングのコンストラクター* @param text ボタンに表示するテキスト */ public function Button(text:String) ( this.text = text; addEventListener(Event.ADDED_TO_STAGE, addedToStage); ) /** * @private ステージに追加ボタン テキスト フィールド * * @param e ステージに追加 */ private function addedToStage(e:Event):void (removeEventListener(Event.ADDED_TO_STAGE, addedToStage); buttonImage = Bitmaps.buttonBitmap; // ビットマップを追加 buttonImage.smoothing = true; addChild (buttonImage) ;var textField:TextField = Tools.generateTextField(50, text);//テキストフィールドを生成... textField.x=(buttonImage.width - textField.width)/2; // ... Arcush 表示への配置と追加 textField.y = (buttonImage.height - textField.height) / 2; addChild(テキストフィールド); this.addEventListener(TouchEvent.TOUCH_BEGIN, touchBegin); // ボタンにドット addEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage); // リスナー 3 ステージ ) /** * 半分ずつアルファでアニメーション化します * * @param e ボタンに指でドットをタッチします */ private function touchBegin(e:TouchEvent):void ( TweenLite.to(buttonImage, .3 , :. 5 ));stage.addEventListener(TouchEvent.TOUCH_END, touchEnd); e:TouchEvent):void ( TweenLite.to(buttonImage, .3, ( alpha:1 )); stage.removeEventListener(TouchEvent.TOUCH_END, touchEnd) ) /** * ステージが削除されると、さらに追い込むことができますヒアリングが必要です * * @ param e ステージから削除するステップ */ private function requestedFromStage(e:Event):void (removeEventListener(Event.REMOVED_FROM_STAGE, selectedFromStage); this.removeEventListener(TouchEvent).TOUCH_BEGIN, touchBegin); stage.removeEventListener(TouchEvent.TOUCH_END, touchEnd) ) ) )
アイテム- その過程で獣に落ちる物体。 おそらく 3 種類の悪臭がコードに記載されている
package elements ( import constants.ItemType; import flash.display.Shape; import flash.filters.GlowFilter; /** * 画面の上部に表示される項目クラス。 * * @author illuszor */ public class Items extends Shape ( / ** 定数を使用した項目タイプ.ItemType */ public var type:String; /** item Speed Speed:uint; public function item(type:String) ( this.type = type; switch (type) ( // 可能です// どの型がコンストラクターに渡されるかを確認するには、 // わずかに異なるグラフィックを見つけることができます。 , 14);this.graphics.endFill(); Break;case ItemType.VERY_GOOD: // this.graphics の周りの小さな青い四角形.beginFill(0x01A6FE)、this.graphics.drawRect(0, 0, 14, 14); this.graphics.endFill(); this.filters = ; Break; およびcol graphics.beginFill(0xFF0000); graphics.drawCircle(0) , 0, 7); graphics.endFill(); ブレーク; ) ) ) )
プラットホーム-「ヘッドヒーロー」グリ。 プラットフォームは小さく、砂利のように見えます。
package elements ( import flash.display.Shape; import flash.filters.GlowFilter; /** * 画面の下部に表示されるオブジェクトをキャッチするためのプラットフォーム。 * ここではすべてがより単純です。白い四角形が描画され、ライトが点灯します。フィルタが停止しています * プラットフォームを okrem ゲーム ユニットとして受け入れさせるための okremium クラス * * @author illuszor */ public class Platform extends graphics.drawRect(0, 0, 110, 24);
ビニール袋 ツール工具付き。

クラス ビットマップ添付されたグラフィックスと呼び出しを削除するメソッドを復讐する
package tools ( import flash.display.Bitmap; /** * Bitmap Attachments からの Bitmap "Generator" * * @author illusor */ public class Bitmaps ( /** @private Bitmap Attachments to Background */ private static var BackgroundBitmap:Class; /** @private ボタンのグラフィック添付ファイル */ private static var ButtonBitmap:Class; /** @private ロゴ グラフィック添付ファイル */ private static var LogoBitmap:Class; ():Bitmap ( return new BackgroundBitmap() as Bitmap ; ) /* * ボタン ビットマップ */ public static function get buttonBitmap():Bitmap ( return new ButtonBitmap() as Bitmap; ) /** get logoBitmap():Bitmap ( return new LogoBitmap() as Bitmap; ) ) )
クラス ツール他のツールに復讐します。 今のところ、単なるテキストフィールドジェネレーターです
package tools ( import flash.text.TextField; import flash.text.TextFormat; /** * 小さなツールを備えたクラス。 * 今のところ、テキスト フィールド ジェネレーターのみ。 * * @author illusor */ public class Tools ( /* * * 指定されたパラメータのテキストフィールドジェネレーター * * @param size フォントサイズ * @param text 表示するテキスト * @param 色 色 text * @return テキストフィールドが設定されていません */ public static functiongenerateTextField(size:uint, text:String = "", color:uint = 0xFFFFFF):TextField ( var textFormat:TextFormat = new TextFormat(); textFormat.color = color ; textFormat.size = サイズ; var textField:TextField = new TextField(); textField.selectable = false; textField.defaultTextFormat = textFormat; textField.text = テキスト; textHeight +4; return textField; ) ) )
パッケージのプログラム画面 画面

メインメニュー- ゴロヴネグリメニュー。 起動するとすぐに表示されます。 ボタン、背景、ロゴを押します。
パッケージ画面 ( import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; import flash.display.DisplayObject; import tools.Bitmaps; import elements.Button; /** * Gree のメイン メニュー クラス。 * 背景、ロゴ、2 つのボタンがここに表示されます。 :Button; ステージに追加 */ private function adddedToStage(e:Event):void (removeEventListener(Event.ADDED_TO_STAGE, addedToStage); // ビットマップ背景を作成し、ヨガを追加しますステージへ var background:Bitmap = Bitmaps.backgroundBitmap; background.smoo; addChild(background);placeBackground(background);// 背景を配置 // ロゴのビットマップを作成し、シーンの幅のサイズを設定 // setシーンに追加する位置 var logo: Bitmap = Bitmaps.logoBitmap;logo.smoothing=true;logo.width=stage.stageWidth*.7;logo.scaleY = logo.scaleX;logo.x = (stage.stageWidth - logo.width)/2;logo.y= stage.stageHeight/5;addChild(logo);//手動で配置されたボタンのコンテナ var buttonContainer:Sprite = new Sprite(); addChild(ボタンコンテナ); // 「PLAY」ボタンと「EXIT」ボタンを作成し、それらをコンテナに組み込みます playButton = new Button("PLAY"); buttonContainer.addChild(playButton); playButton.width=stage.stageWidth/2; playButton.scaleY=playButton.scaleX; exitButton = NewButton("EXIT"); buttonContainer.addChild(exitButton); exitButton.y = buttonContainer.height + 25; exitButton.width=stage.stageWidth/2; exitButton.scaleY=exitButton.scaleX; // ボタンを使用してコンテナを配置する buttonContainer.x=(stage.stageWidth – buttonContainer.width)/2; ボタンコンテナ.y = (ステージ.ステージ高さ - ボタンコンテナ.高さ) / 2 + ステージ.ステージ幅 / 6; ) /** * この関数は、DisplayObject への転送が比率を変更せずに * シーン全体を埋めるように機能します。 ビューパッドには背景画像があります * * @paramscaledObject DisplayObject を貼り付けます */ private function placeBackground(scaledObject:DisplayObject):void (scaledObject.scaleX =scaledObject.scaleY = 1; var:Number; if (scaledObject.width / sca height > stage.stageWidth / stage.stageHeight)(scale = stage.stageHeight /scaledObject.height; ) else (scale = stage.stageWidth /scaledObject.width; )scaledObject.scaleX =scaledObject.scaleY =scale; stage.stageWidth -scaledObject.width ) / 2; scaledObject.y = (stage.stageHeight -scaledObject.height) / 2; ) ) )
クラスで ゲーム画面ゲームのプロセスを経ます。 上からアイテムが落ちてくる。 このタイプの休耕型か独特の場所で捕まえる必要があります。 ケルス・イグロヴィムサイクル
パッケージ画面 ( import com.greensock.TweenLite; import constants.ItemType; import elements.Button; import elements.Platform; import elements.Item; import events.GameEvent; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent;import flash.events.TimerEvent;import flash.events.TouchEvent;import flash.text.TextField;import flash.utils.Timer;import tools.Tools;/** * メイン ゲーム クラス * があります画面の下部にプラットフォームがあり、画面のどの部分でも指を左右に動かすことができます。 * -ItemType.EVIL - 「悪」アイテム。プログラムを開始すると、ゲームの結果は次のようになります。獲得できるポイントの最大数。 ※新品の革製品は、手前に行くほど潰れていきます。 * * 上部には、ポイントを獲得するためのインジケーターがあり、上部に向かって右に進むと、メイン メニューの終了ボタンが表示されます。 ※プラットフォーム下の中央付近の下部に、流量レベルのインジケーターがあります。 * * * @author illuszor */ public class GameScreen extends Sprite ( /** プラットフォームとアイテム用の @private コンテナ */ private var gameContainer:Sprite; /** メインメニューを終了するための @private ボタン */ private var menuButton:Button / ** @private platform */ private var platform:Platform;/** @private game timer.uint; /** @private currentscore スコア */ private var currentScore:int; /** 数値スコアを表示する @private テキスト フィールド * / private var levelText:TextField; /** @スコア表示用のプライベート テキスト フィールド */ private var coreText:TextField;/** 最大数スコア */ public var maxScore:uint; /** * コンストラクターはステージへの追加を聞いています。 */ public function GameScreen() ( addEventListener(Event.ADDED_TO_STAGE, addedtToStage); ) /** * 画面要素を作成します * * ステージに追加する @param e */ private function addedtToStage(e:Event):void (removeEventListener (Event .ADDED_TO_STAGE, addedtToStage), gameContainer = new Sprite(); // コンテナ addChild(gameContainer); platform = new Platform(); .18; platform.scaleY = platform.scaleX; platform.x = (stage.stageWidth - platform.width) / 2; platform.y = stage.stageHeight * .88; addChild(platform);scoreText = Tools.generateTextField(30 , "SCORE: 0"); // スコア テキスト フィールド coreText.width = stage.stageWidth / 2 ; スコアテキスト.x = スコアテキスト.y = 10; addChild(scoreText); "); // レベルテキストフィールド levelText.width = levelText.textWidth + 4; levelText.x = (stage.stageWidth - levelText.width) / 2; levelText.y = stage.stageHeight - levelText.height - 20;addChild(levelText);menuButton = new Button("MENU");//メイン メニューに入るボタン.addChild(menuButton);menuButton.width=stage .stageWidth /3.2; メニューボタン.スケールY=メニューボタン.スケールX; menuButton.x = stage.stageWidth - menuButton.width - 10; メニューボタン.y = 10; startNewLevel(); // 新しいスレッドを開始 menuButton.addEventListener(TouchEvent.TOUCH_TAP, exitGame); // ボタンを押してメニューを終了します stage.addEventListener(MouseEvent.MOUSE_MOVE, moveplatform); // 画面に指を置きます stage.addEventListener(MouseEvent.MOUSE_UP, moveplatform); // 画面に指を置きます addEventListener(Event.ENTER_FRAME, updateGame); // 更新します addEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage); ) /** * @private は、ディスプレイ上の指の位置から古い状態でプラットフォームをクラッシュさせます。 * * @param 画面上に指を置くか、画面から指を移動します */ private function moveplatform(e:MouseEvent):void ( if(mouseY > menuButton.y + menuButton.height)TweenLite.to(platform, . 36, ( x:mouseX + -platform.width/2 ));) /** * @private 新しいレベルを開始します。 スキン レベルは最大 20 個のアイテムをスタックします */ private function startNewLevel():void ( var interval:uint = 2300; // タイマー サイクル間隔 if (2300 - currentLevel * 350< 250) { // чем выше уровень, тем меньше интервал interval = 350; } else { interval = 2300 - currentLevel * 350; } gameTimer = new Timer(interval, 20); // создаём и запускаем таймер. gameTimer.start(); gameTimer.addEventListener(TimerEvent.TIMER, addItem); gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } /** * @private Создаём новый айтем по таймеру * * @param e событие тика таймера */ private function addItem(e:TimerEvent):void { var randomRange:Number = Math.random(); // случайное значене var itemType:String = ItemType.GOOD; // тип нового айтема. по умолчнанию все айтемы обычные if (randomRange >0.65 && ランダム範囲< .95) { // если ヴィパドコーヴェの意味指定された範囲 (30%) について... itemType = itemType.EVIL; // アイテムは邪悪です) else if (randomRange >= .95)( // 5% のアイテムは「強化」されません itemType = ItemType.VERY_GOOD; ) var item:Item = new item(itemType); // 生成された型から新しい項目を作成します item.x = stage.stageWidth * Math.random(); // vipadkovіに配置されます。 x アイテム.y = -アイテム.高さ; // そして by.y はシーン間をクリーンアップします item.speed = currentLevel+1; // アイテム速度 gameContainer.addChild(item); // そしてシーンに yogo を追加します) /** * @private タイマーがロボットを終了する場合、不要な場合はクリアして新しい行を開始します * * @param e タイマーロボットの終了を保留します */ private function cicloEnd(e:TimerEvent):void ( gameTimer.removeEventListener(TimerEvent.TIMER, addItem); gameTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, cicloEnd); gameTimer = null; // タイマー currentLevel++; に送信したタイマーから明らかに聞こえました。 " + String(currentLevel + 1); // 2 つのテキスト RIVNE LEVELTEXT.WIDTH = leveltext.Textwidth +4; StartNewlevel (); // Rive のノベルティを起動します)/** * @private igroviy サイクル * mo. * Zverta プラットフォーム* * @param e enterFrame podіya */ private function updateGame(e:Event):void ( // ゲームコンテナの空間全体を循環し、プラットフォーム crim (i = 1) for (var i:int = 1;< gameContainer.numChildren; i++) { var tempItem:Item = gameContainer.getChildAt(i) as Item; // берём айтем tempItem.y += (tempItem.speed * 3) * .8; // увеличиваем его.y координаты в зависимости от его скорости. if (tempItem.y >stage.stageHeight) ( // ステージの後ろに移動し続けます... gameContainer.removeChild(tempItem); //... ヨガのように見えます... if (tempItem.type == ItemType.GOOD) currentScore-- ; // .. そして、同じように見えるときにタイプが同じであれば、接眼レンズで 1 つを見ることができます。EVIL: currentScore--; Break; ) // アイテムがプラットフォームに当たったときも、アイテムはどうやら同じシーン内で消費されなくなりました gameContainer.removeChild(tempItem); ) ) coreText.text = "SCORE:" + currentScore; // 接眼レンズを使用してテキストフィールドを更新します if (maxScore< currentScore) maxScore = currentScore; // записываем максимальное количество очков if (currentScore < -5) { // если количество очков меньше, чем -5.. dispatchEvent(new GameEvent(GameEvent.GAME_OVER)); //... генерируем событие проигрыша } } /** * @private генерируем событие выхода из игры * * @param e событие прикосновения к кнопке выхода в меню */ private function exitGame(e:TouchEvent):void { dispatchEvent(new GameEvent(GameEvent.EXIT_GAME)); } /** * @private удаляем все ненужные больше слушатели * * @param e событие удаления со сцены */ private function removedFromStage(e:Event):void { removeEventListener(Event.REMOVED_FROM_STAGE, removedFromStage); removeEventListener(Event.ENTER_FRAME, updateGame); stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveplatform); stage.removeEventListener(MouseEvent.MOUSE_UP, moveplatform); menuButton.removeEventListener(TouchEvent.TOUCH_TAP, exitGame); gameTimer.stop(); gameTimer.removeEventListener(TimerEvent.TIMER, addItem); gameTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } } }
スコア画面プログラムした直後にそれがわかります。 サブバッグの結果を含むテキストフィールドと、メニューに切り替えて gr を繰り返すためのボタンを表示します。
packagescreens( import elements.Button; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import tools.Tools; /** テキスト「YOUR SCORE:」と「MENU」で構成されますおよび「AGAIN」ボタン * * @author illuszor */ public class ScoreScreen extends Sprite ( /** @private 表示するスコアの番号 */ private var core:uint; /** 「MENU」ボタン */ public var menuButton:Button ; /** "AGAIN" ボタン */ public var againButton:Button; /** * コンストラクターは stage.for 表示に追加することをチェックします */ public function ScoreScreen(score:uint) ( this.score = core; addEventListener(Event .ADDED_TO_STAGE, addedToStage); ) /** * スコアを表示するテキスト フィールドと、メイン メニューで回転を繰り返すボタンを作成します * * ステージに追加する @param e */ private function addedToStag e(e: Event):void (removeEventListener(Event.ADDED_TO_STAGE, addedToStage); // 獲得したポイント数を表示するテキスト フィールド var coreText:TextField = Tools.generateTextField(40, "YOUR SCORE:" + core); スコアテキスト.x=(ステージ.ステージ幅 - スコアテキスト.幅)/2; スコアテキスト.y = (ステージ.ステージ高さ - スコアテキスト.高さ) / 2 - ステージ.ステージ高さ / 6; addChild(スコアテキスト); // メインメニューに戻るボタン menuButton = new Button("MENU"); addChild(メニューボタン); menuButton.width=stage.stageWidth/2; メニューボタン.スケールY=メニューボタン.スケールX; menuButton.x=(stage.stageWidth - menuButton.width)/2; menuButton.y=scoreText.y+scoreText.height+30; // ボタンを再び「獲得」Button = New Button("AGAIN"); addChild(再度ボタン); もう一度Button.width=stage.stageWidth/2; againButton.scaleY = againButton.scaleX; againButton.x=(stage.stageWidth - againButton.width)/2; 再度Button.y = menuButton.y + menuButton.height + 30; ) ) )
І休憩 - 授業 主要根元から。 グリのメインクラス。 画面の切り替えとこれらのスイッチの浄化に役立ちます。 猛攻の画面のボタン音とゲーム音を聞きます。 秋には、シーンをクリアして必要な画面を表示します
パッケージ ( import constants.ScreenType; import events.GameEvent; import flash.desktop.NativeApplication; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash. events.TouchEvent;import flash.ui.Multitouch;import flash.ui.MultitouchInputMode;importscreen.GameScreen;importscreen.MainMenu;importscreen.ScoreScreen; 足元: 画面の下部に「プラットフォーム」があります。赤、緑、青の 3 種類の「オブジェクト」が落ちます。プラットフォームでそれらをキャッチする必要があります。* * FlashDevelop 4.0.1 および Flex SDK 4.6 の助けを借りて作成 * @author illuszor * @バージョン 0.6 */ public class Main extends Sprite (/** @private メインメニュー画面 */ private var menuScreen:MainMenu; /** @private ゲーム画面 */ private var gameScreen:GameScreen; /** @private スコア画面 */プライベート変数scoreScreen:ScoreScreen; /** @プライベート テキスト値 画面タイプ * 現時点で表示されている定数.ScreenType * 聴覚および画面オブジェクトのコア クリーニングに必要 */ private var currentScreen:String; /** * ヘッド コンストラクター */ public function Main():void ( stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; // プログラムの非アクティブ化 "または "戻る" を促す) stage.addEventListener(Event.DEACTIVATE , deactivate); // 入力のタイプ。クリックする TOUCH_POINT をクリックすると入力する必要があります。 Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; ** * @private show main menu */ private function showMenu():void ( currentScreen = ScreenType.MAIN_MENU; / / 画面をフリーズします type menuScreen = new MainMenu(); // メニューを作成し、シーンに何かを追加します addChild(menuScreen); menuScreen.playButton.addEventListener(TouchEvent.TOUCH_TAP, startGame) ;// メニュー ボタンにリスナーを追加します menuScreen. exitButton.addEventListener(TouchEvent.TOUCH_TAP, deactivate); ) /** * @private ゲーム画面を表示 * * @ メインメニューのプレイボタンに */ private function startGame(e:TouchEvent) :void ( clear(); // currentScreen = ScreenType.GAME_SCREEN; をクリアします。 // 画面を停止 type gameScreen=new GameScreen(); // ゲーム画面を作成し、ステージに追加します addChild(gameScreen); gameScreen.addEventListener(GameEvent.EXIT_GAME, exitGame); // ボタンでゲーム画面を閉じます gameScreen.addEventListener(GameEvent.GAME_OVER, gameOver); // プログラムを終了します ) /** * @private ボタンを押した後にゲームを終了します * * @param e ゲームを終了します exit */ private function exitGame(e:GameEvent):void ( clear(); // showMenu() をクリアします; // show smut menu) /** * @private game run, show result * * @param e run Program */ private function gameOver(e:GameEvent):void ( var core:uint = gameScreen.maxScore; // クリアポイント数(); // currentScreen = ScreenType.SCORE_SCREEN; // 画面タイプをフリーズ coreScreen = new ScoreScreen(score); addEventListener(TouchEvent.TOUCH_TAP, exitScore);// リスナーボタンをスコアスクリーン結果画面に .againButton.addEventListener(TouchEvent. TOUCH_TAP, startGame); ) /** * @private は結果画面をボタンの後ろに残します。 * ボタンを押してゲームを終了するときに単に exitGame() を呼び出すのと同じものを奪う必要があります * * @param e 結果画面から終了ボタンにドットを押します */ private function exitScore(e :TouchEvent):void ( exitGame( null );) /** * 重要でない聴覚および画面オブジェクトの @private クリーンアップ * ストリーミング画面の残り。 */ プライベート関数 clear():void ( switch (currentScreen) ( case ScreenType.MAIN_MENU: menuScreen.playButton.removeEventListener(TouchEvent.TOUCH_TAP, startGame); menuScreen.exitButton.removeEventListener(TouchEvent.TOU) menuScreen = null; Break; case screentype.game_screen:gamescreen.removeeventlistener(gameevent.exit_game、exitgame); scorescreen.menubutton.removeeventlistener(touchevent.touch_tap、exitscore); scorescreen.againbutton.againbutton.removeenvutton.removeenvutton. removeenvutton. removeenvutton. removeenvutton. removeenvutton. removeenbutton. removeenvutton. removeenvutton.スコアスクリーン); scorescreen = null; 「ホーム」または「戻る」ボタンを押すと、プログラムが終了します * * @param e pending deactivation */ private function deactivate(e:Event):void ( NativeApplication.nativeApplication.e xit(); ) )

コンパイルと起動。

プロジェクトのデザイン、グラフィックのペイント、コードの作成。 それで全部です。 ゲームを試すことができます。 スマホを持って行きます 開発者向けオプション、 含む USBデバッグモード。 ケーブルでコンピュータに接続します。

次に、FlashDevelop を使用する必要があります。
- プロジェクトのコンパイル プロジェクト/ビルドプロジェクト(F8)。 教皇庁において 置き場フラッシュドライブを表示します。
- 始める PackageApp.bat。 「2」を入力し、Enterを押します。 プロジェクトがapkにパックされ、フォルダーに表示されるときに確認してください 距離;
- メニューから選択します リモートセッションのデバッグ/開始;
- 開始 Run.bat- 添付ファイルの追加。そこを実行してデバッガーに接続します。

これだけで、テストを行ったり、デバッガーを微調整したり、添付ファイルから直接トレーシーを取得できるようになります。 残念ながら、プロファイラーは機能しません。

すべての ts 4 dії は別の方法で作業できます。 ただ選択してください プロジェクト/テストプロジェクト(F5)。 すべてが自動的に勝ちます。

抗議を受けてプログラムが終了した場合、プログラムは開始される PackageApp.bat, 1つを入力してください。 教皇庁において 距離 apkリリースが表示される

最初の部分の終わり。

© 2022 androidas.ru - Android のすべて