├── .gitignore ├── ja ├── EaselJS │ └── 0.6.0 │ │ ├── docs │ │ └── README.md │ │ ├── src │ │ ├── README.md │ │ └── easeljs │ │ │ ├── utils │ │ │ ├── UID.js │ │ │ ├── Log.js │ │ │ └── SpriteSheetUtils.js │ │ │ ├── geom │ │ │ ├── Point.js │ │ │ └── Rectangle.js │ │ │ ├── display │ │ │ ├── Shadow.js │ │ │ ├── Shape.js │ │ │ ├── Bitmap.js │ │ │ └── DOMElement.js │ │ │ ├── filters │ │ │ ├── AlphaMaskFilter.js │ │ │ ├── Filter.js │ │ │ ├── ColorMatrixFilter.js │ │ │ ├── AlphaMapFilter.js │ │ │ ├── ColorFilter.js │ │ │ └── BoxBlurFilter.js │ │ │ ├── ui │ │ │ ├── ButtonHelper.js │ │ │ └── Touch.js │ │ │ └── events │ │ │ ├── MouseEvent.js │ │ │ └── EventDispatcher.js │ │ └── tutorials │ │ ├── README.md │ │ ├── Getting Started │ │ ├── demo.html │ │ └── index.html │ │ ├── Mouse Interaction │ │ ├── basic.html │ │ ├── drag.html │ │ ├── stage.html │ │ ├── hitArea.html │ │ ├── container.html │ │ ├── events.html │ │ └── index.html │ │ ├── HitTest │ │ ├── hitTest.html │ │ ├── localToLocal.html │ │ ├── globalToLocal.html │ │ └── index.html │ │ ├── Animation and Ticker │ │ ├── simple.html │ │ ├── onTick.html │ │ ├── timeBased.html │ │ ├── pausing.html │ │ └── index.html │ │ ├── Inheritance │ │ ├── demo.html │ │ ├── Button.js │ │ └── index.html │ │ └── shared │ │ └── tutorial.js ├── PreloadJS │ └── 0.3.0 │ │ ├── src │ │ ├── README.md │ │ ├── preloadjs │ │ │ └── errors │ │ │ │ └── errors_ja-jp.js │ │ └── easeljs │ │ │ ├── utils │ │ │ └── Log.js │ │ │ └── events │ │ │ └── EventDispatcher.js │ │ └── docs │ │ └── README.md ├── SoundJS │ └── 0.4.0 │ │ ├── docs │ │ └── README.md │ │ └── src │ │ ├── README.md │ │ ├── soundjs │ │ ├── FlashPlugin.js │ │ ├── HTMLAudioPlugin.js │ │ ├── WebAudioPlugin.js │ │ └── errors │ │ │ └── errors_ja-jp.js │ │ └── easeljs │ │ ├── utils │ │ └── Log.js │ │ └── events │ │ └── EventDispatcher.js └── TweenJS │ └── 0.4.0 │ ├── src │ ├── README.md │ ├── tweenjs │ │ ├── CSSPlugin.js │ │ ├── SamplePlugin.js │ │ ├── MotionGuidePlugin.js │ │ └── Ease.js │ └── easeljs │ │ └── events │ │ └── EventDispatcher.js │ └── docs │ └── README.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *TMP* -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/docs/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/PreloadJS/0.3.0/src/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/docs/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/src/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/TweenJS/0.4.0/src/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/PreloadJS/0.3.0/docs/README.md: -------------------------------------------------------------------------------- 1 | translated files would go here. -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/src/soundjs/FlashPlugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CreateJS/localization/HEAD/ja/SoundJS/0.4.0/src/soundjs/FlashPlugin.js -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/src/soundjs/HTMLAudioPlugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CreateJS/localization/HEAD/ja/SoundJS/0.4.0/src/soundjs/HTMLAudioPlugin.js -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/src/soundjs/WebAudioPlugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CreateJS/localization/HEAD/ja/SoundJS/0.4.0/src/soundjs/WebAudioPlugin.js -------------------------------------------------------------------------------- /ja/PreloadJS/0.3.0/src/preloadjs/errors/errors_ja-jp.js: -------------------------------------------------------------------------------- 1 | var logs = { 2 | PRELOAD_NO_FILE: "指定されたファイルは nul です。", 3 | PRELOAD_MANIFEST_EMPTY: "指定されたマニフェストにはロードするファイルが含まれていません。", 4 | PRELOAD_MANIFEST_NULL: "指定されたマニフェストは null です。", 5 | POLYFILL_BIND: "Function.bind PolyFill を使用します。", 6 | POLYFILL_INDEXOF: "Array.indexOf PolyFill を使用します。" 7 | } 8 | createjs && createjs.Log && createjs.Log.addKeys(logs); -------------------------------------------------------------------------------- /ja/SoundJS/0.4.0/src/soundjs/errors/errors_ja-jp.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var logs = { 3 | AUDIO_FAILED_404: "ファイル %DETAILS が再生できません。404 ファイルが見つかりませんでした。", 4 | AUDIO_FAILED_INTERRUPT: "ファイル %DETAILS% が再生できません。割り込みに利用可能なチャネルがありません。", 5 | AUDIO_FAILED_NOT_LOADED: "ファイル %DETAILS% が再生できません。まだ読み込みが未完了です。", 6 | AUDIO_FLASH_FAILED: "Flash を初期化することができませんでした。" 7 | } 8 | createjs.Log && createjs.Log.addKeys(logs); 9 | }()) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | localization 2 | ============ 3 | 4 | Repo for collaborative creation of localized documentation. 5 | 6 | Each language will have it's own top level directory, with sub directories for each library, version, and resource type. For example /ja/SoundJS/0.4.0/src or /fr/EaselJS/0.6.0/tutorials. 7 | 8 | Language owners are responsible for building new API docs from the translated source comments. See the "tools" directory in each library's repo for build tools and info. 9 | 10 | Add an issue if you'd like to translate documentation or other materials to a new language. Submit a pull request to contribute to an existing translation request. -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Getting Started/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: はじめかた 5 | 6 | 7 | 19 | 20 | 21 | 22 | alternate content 23 | 24 | 25 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/basic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: onClick 5 | 6 | 7 | 24 | 25 | 26 | 27 | 代替コンテンツ 28 | 29 | 30 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/HitTest/hitTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: hitTest 5 | 6 | 7 | 26 | 27 | 28 | 29 | 代替コンテンツ 30 | 31 | 32 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Animation and Ticker/simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: シンプルなアニメーション 5 | 6 | 7 | 28 | 29 | 30 | 31 | 代替コンテンツ 32 | 33 | 34 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Inheritance/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJS デモ: 継承 5 | 6 | 7 | 8 | 30 | 31 | 32 | 33 | 代替コンテンツ 34 | 35 | 36 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Animation and Ticker/onTick.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: DisplayObject.onTick 5 | 6 | 7 | 34 | 35 | 36 | 37 | 代替コンテンツ 38 | 39 | 40 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/HitTest/localToLocal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: localToLocal 5 | 6 | 7 | 38 | 39 | 40 | 41 | 代替コンテンツ 42 | 43 | 44 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Inheritance/Button.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | var Button = function(label, color) { 4 | this.initialize(label, color); 5 | } 6 | var p = Button.prototype = new createjs.Container(); // Containerから継承 7 | 8 | p.label; 9 | p.background; 10 | p.count = 0; 11 | 12 | p.Container_initialize = p.initialize; 13 | p.initialize = function(label, color) { 14 | this.Container_initialize(); 15 | 16 | this.label = label; 17 | if (!color) { color = "#CCC"; } 18 | 19 | var text = new createjs.Text(label, "20px Arial", "#000"); 20 | text.textBaseline = "top"; 21 | text.textAlign = "center"; 22 | 23 | var width = text.getMeasuredWidth()+30; 24 | var height = text.getMeasuredHeight()+20; 25 | 26 | this.background = new createjs.Shape(); 27 | this.background.graphics.beginFill(color).drawRoundRect(0,0,width,height,10); 28 | 29 | text.x = width/2; 30 | text.y = 10; 31 | 32 | this.addChild(this.background,text); 33 | this.addEventListener("click", this.handleClick); 34 | this.addEventListener("tick", this.handleTick); 35 | } 36 | 37 | p.handleClick = function (event) { 38 | var target = event.target; 39 | alert("You clicked on a button: "+target.label); 40 | } 41 | 42 | p.handleTick = function(event) { 43 | p.alpha = Math.cos(p.count++*0.1)*0.4+0.6; 44 | } 45 | 46 | window.Button = Button; 47 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/shared/tutorial.js: -------------------------------------------------------------------------------- 1 | function initTutorial() { 2 | formatCodeAreas(); 3 | injectDemos(); 4 | } 5 | 6 | function formatCodeAreas() { 7 | var tags = document.getElementsByTagName("textarea"); 8 | for (var i=tags.length-1; i>=0; i--) { 9 | var e = tags[i]; 10 | if (!e || e.className.indexOf("brush: ") != 0) { continue; } 11 | var code = e.value.replace(/[&]/g,"&").replace(/=0; i--) { 23 | var e = tags[i]; 24 | if (!e || e.className.indexOf("demo") != 0) { continue; } 25 | var src = e.src; 26 | var div = document.createElement("div"); 27 | div.className = "demo"; 28 | e.parentNode.replaceChild(div, e); 29 | div.appendChild(e); 30 | var p = document.createElement("p"); 31 | var srcLabel = src.split("\\").join("/").split("/").pop(); 32 | var html = "デモ"; 33 | if (e.longDesc) { html += ": "+e.longDesc; } 34 | html += ""+srcLabel+""; 35 | p.innerHTML = html; 36 | div.appendChild(p); 37 | } 38 | } -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/HitTest/globalToLocal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: globalToLocal 5 | 6 | 7 | 38 | 39 | 40 | 41 | 代替コンテンツ 42 | 43 | 44 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/drag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: ドラッグ 5 | 6 | 7 | 44 | 45 | 46 | 47 | 代替コンテンツ 48 | 49 | 50 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/stage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: ステージのマウスイベント 5 | 6 | 7 | 49 | 50 | 51 | 52 | 代替コンテンツ 53 | 54 | 55 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/hitArea.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: onClick 5 | 6 | 7 | 43 | 44 | 45 | 46 | 代替コンテンツ 47 | 48 | 49 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/container.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: コンテナのイベント 5 | 6 | 7 | 50 | 51 | 52 | 53 | 代替コンテンツ 54 | 55 | 56 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Animation and Ticker/timeBased.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: 時間ベースのアニメーション 5 | 6 | 7 | 39 | 40 | 41 |
49 | 50 | 代替コンテンツ 51 | 52 | 53 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/utils/UID.js: -------------------------------------------------------------------------------- 1 | /* 2 | * UID 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 連続したユニークな(重複しない)ID番号を生成するためのグローバルユーティリティです。UIDクラスは静的インターフェースを使用し(ex. UID.get())、インスタンス化すべきではありません。 36 | * @class UID 37 | * @static 38 | **/ 39 | var UID = function() { 40 | throw "UID cannot be instantiated"; 41 | } 42 | 43 | /** 44 | * @property _nextID 45 | * @type Number 46 | * @protected 47 | **/ 48 | UID._nextID = 0; 49 | 50 | /** 51 | * 次のユニークIDを返却します。 52 | * @method get 53 | * @return {Number} 次のユニークID 54 | * @static 55 | **/ 56 | UID.get = function() { 57 | return UID._nextID++; 58 | } 59 | 60 | createjs.UID = UID; 61 | }()); 62 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Animation and Ticker/pausing.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: Ticker.setPaused() 5 | 6 | 7 | 57 | 58 | 59 |
60 | 61 | 代替コンテンツ 62 | 63 | 64 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/events.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EaselJSデモ: Mouse Events 5 | 6 | 7 | 54 | 55 | 56 | 57 | 代替コンテンツ 58 | 59 | 60 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/geom/Point.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Point 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 2 次元 x/ y 座標系における点を表します。 36 | * 37 | *

38 | * var point = new Point(0, 100); 39 | * 40 | * @class Point 41 | * @constructor 42 | * @param {Number} [x=0] X 座標です。 43 | * @param {Number} [y=0] Y 座標です。 44 | **/ 45 | var Point = function(x, y) { 46 | this.initialize(x, y); 47 | } 48 | var p = Point.prototype; 49 | 50 | // パブリックプロパティ: 51 | /** 52 | * X 座標です。 53 | * @property x 54 | * @type Number 55 | **/ 56 | p.x = 0; 57 | 58 | /** 59 | * Y 座標です。 60 | * @property y 61 | * @type Number 62 | **/ 63 | p.y = 0; 64 | 65 | // コンストラクタ: 66 | /** 67 | * 初期化用のメソッドです。 68 | * @method initialize 69 | * @protected 70 | */ 71 | p.initialize = function(x, y) { 72 | this.x = (x == null ? 0 : x); 73 | this.y = (y == null ? 0 : y); 74 | } 75 | 76 | // パブリックメソッド: 77 | /** 78 | * この Point インスタンスの複製を返します。 79 | * @method clone 80 | * @return {Rectangle} 現在の Point インスタンスの複製です。 81 | **/ 82 | p.clone = function() { 83 | return new Point(this.x, this.y); 84 | } 85 | 86 | /** 87 | * このオブジェクトの文字列での表現を返します。 88 | * @method toString 89 | * @return {String} このインスタンスの文字列表現です。 90 | **/ 91 | p.toString = function() { 92 | return "[Point (x="+this.x+" y="+this.y+")]"; 93 | } 94 | 95 | createjs.Point = Point; 96 | }()); -------------------------------------------------------------------------------- /ja/TweenJS/0.4.0/docs/README.md: -------------------------------------------------------------------------------- 1 | # TweenJS 2 | 3 | TweenJS は JavaScript のためのシンプルなトゥイーンエンジンです。 4 | EaselJS ライブラリと統合しやすいように開発されていますが、依存しておらず、特有のものはありません(でも、デフォルトでは同じ Ticker クラスを使用しています)。 5 | オブジェクトの数値系のプロパティと CSS スタイルプロパティの両方のトゥイーンをサポートしています。 6 | 7 | ## Example 8 | 9 | API はシンプルですがとてもパワフルで、チェインコマンドによって複雑なトゥイーンを簡単に作ることが出来ます。 10 | 11 | var tween = createjs.Tween.get(myTarget).to({x:300},400).set({label:"hello!"}).wait(500).to({alpha:0,visible:false},1000).call(onComplete); 12 | 13 | この上の例では、下記のような新しいトゥイーンインスタンスを作成します。 14 | 15 | * あるターゲットの x の値を 400ms で 300 にし、"Hello!" というラベルをセットします。 16 | * 500ms 一時停止します。 17 | * ターゲットの透明度を 1秒 で 0 にし、さらに visible を false に設定します。 18 | * onComplete 関数を呼び出します。 19 | 20 | トゥイーンは二つの要素で構成されています:ステップとアクション 21 | 22 | ステップはトゥイーン後のプロパティと一緒にそれにかかる時間をワンセットで定義します(かかる時間が 0 であっても)。 23 | ステップは "to" と "wait" メソッドがあります。 24 | ステップはひたすら定義です。 25 | 任意でトゥイーンの位置を指定できますし、つねに同じ位置に同じプロパティを設定できます。 26 | 27 | アクションは時間を持たず、ステップの間に実行されます。 28 | "call"、"set"、"play"、"pause" メソッドがあります。 29 | これらはただしい順序で実行されますが、シーケンスの中での厳密な瞬間の時間で実行されるわけでは有りません。 30 | play と pause のアクションによってトゥイーンをインタラクションさせるなど、様々なことを実現する事が出来ます。 31 | 32 | このライブラリは alpha です。テスト中で(大規模にはやっていません)、何か変更が行われる可能性があります。 33 | 34 | トゥイーンは不特定多数のコンフィギュレーションプロパティをサポートしており、新しいトゥイーンを作成するときの第二引数で指定できます: 35 | 36 | createjs.Tween.get(target, {loop:true, useTicks:true, css:true, ignoreGlobalPause:true}).to(etc...); 37 | 38 | 全てのコンフィギュレーションプロパティはデフォルトでは false になっています。 39 | そのプロパティは: 40 | 41 | loop - トゥイーンが終了したらループするかどうかを指定します 42 | useTicks - トゥイーンの時間を、ミリ秒ではなくティックで動作するようにします 43 | css - いくつかの CSS プロパティの CSS マッピングを有効にします 44 | ignoreGlobalPause - Ticker が一時停止してもトゥイーンの時間は進めるようにします 45 | 46 | Tween.get を使ったとき、第三引数を true に指定するとターゲット上のアクティブなトゥイーンを上書きすることもできます。 47 | createjs.Tween.get(target,null,true); // ターゲットに既に設定されているトゥイーンを上書きします。 48 | 49 | 50 | ## Support and Resources 51 | 52 | * サンプルと更なる情報は [TweenJS website](http://tweenjs.com/) 53 | * 熟読:[documetation](http://createjs.com/Docs/TweenJS/) 54 | * 質問や他のユーザーとの議論は [Community](http://community.createjs.com) サイトへ。 55 | * 詳細な情報は [examples](https://github.com/CreateJS/TweenJS/tree/master/examples) and [API documentation](http://createjs.com/Docs/TweenJS/) をごらんください。 56 | 57 | [gskinner.com](http://www.gskinner.com) が開発しており、MIT license 下でフリーでリリースされており、つまり大抵のことにお使いいただけると言う事です(商用利用も可)。クレジット表記が可能であればうれしいですが、必須ではありません。 58 | 59 | TweenJS は現在 alpha です。我々は近いうちに、ライブラリ、サンプル、ドキュメントなどに大きな改良を行っています。既存の API に変更が加わる可能性がある事に注意してください。 60 | 61 | ## Classes 62 | 63 | **Tween** 64 | 新しい Tween インスタンスを返します。 65 | 66 | **Timeline** 67 | Timeline クラスは複数のトゥイーンを同期し、グループとして管理する事ができます。 68 | 69 | **Ease** 70 | Ease クラスは TweenJS に対してイージング関数を提供します。標準の 4 つのイージングに指定するパラメータは使いません。一つのパラメータで 0 から 1 のリニアなトゥイーンを指定できます。 71 | 72 | ## Thanks 73 | 74 | Ease クラスの基礎は、[Robert Penner](http://flashblog.robertpenner.com/) のイージング関数のおかげです。 75 | 76 | 77 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/geom/Rectangle.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Rectangle 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 座標 (x, y) および (x+width, y+height) で定義される矩形を表します。 36 | * 37 | * @example 38 | * var rect = new createjs.Rectangle(0, 0, 100, 100); 39 | * 40 | * @class Rectangle 41 | * @constructor 42 | * @param {Number} [x=0] X 座標です。 43 | * @param {Number} [y=0] Y 座標です。 44 | * @param {Number} [width=0] この Rectangle の幅です。 45 | * @param {Number} [height=0] この Rectangle の高さです。 46 | **/ 47 | var Rectangle = function(x, y, width, height) { 48 | this.initialize(x, y, width, height); 49 | } 50 | var p = Rectangle.prototype; 51 | 52 | // パブリックプロパティ: 53 | /** 54 | * X 座標です。 55 | * @property x 56 | * @type Number 57 | **/ 58 | p.x = 0; 59 | 60 | /** 61 | * Y 座標です。 62 | * @property y 63 | * @type Number 64 | **/ 65 | p.y = 0; 66 | 67 | /** 68 | * 幅です。 69 | * @property width 70 | * @type Number 71 | **/ 72 | p.width = 0; 73 | 74 | /** 75 | * 高さです。 76 | * @property height 77 | * @type Number 78 | **/ 79 | p.height = 0; 80 | 81 | // コンストラクタ: 82 | /** 83 | * 初期化用のメソッドです。 84 | * @method initialize 85 | * @protected 86 | */ 87 | p.initialize = function(x, y, width, height) { 88 | this.x = (x == null ? 0 : x); 89 | this.y = (y == null ? 0 : y); 90 | this.width = (width == null ? 0 : width); 91 | this.height = (height == null ? 0 : height); 92 | } 93 | 94 | // パブリックメソッド: 95 | /** 96 | * この Rectangle インスタンスの複製を返します。 97 | * @method clone 98 | * @return {Rectangle} 現在の Rectangle インスタンスの複製です。 99 | **/ 100 | p.clone = function() { 101 | return new Rectangle(this.x, this.y, this.width, this.height); 102 | } 103 | 104 | /** 105 | * このオブジェクトの文字列での表現を返します。 106 | * @method toString 107 | * @return {String} このインスタンスの文字列表現です。 108 | **/ 109 | p.toString = function() { 110 | return "[Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")]"; 111 | } 112 | 113 | createjs.Rectangle = Rectangle; 114 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Inheritance/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EaselJS チュートリアル: 継承 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

EaselJS: 継承

21 |

22 | あらすじ: 表示オブジェクトを拡張して、カスタムクラスを作成する
23 | 扱う内容: 継承
24 | 対象: EaselJS v0.6.0 25 |

26 |
27 | 28 |
29 |
30 |

継承

31 |
32 |

33 | 既存の表示オブジェクトを拡張する新しいクラス定義を作成することによって、カプセル化と、容易に再利用可能な視覚的要素の提供を簡単に行うことができます。 このチュートリアルでは、クラスを拡張する1つの方法を示していますが、他にも多くの方法があります - その中にあなたにとって最も合ったやり方があっても、このレッスンではここで学ぶ方法を利用してください。 34 |

35 | 36 |

37 | Containerを拡張したButtonクラスを作成します。 38 |

39 | 56 |

57 | 1行目と15行目では匿名のラッパー関数を作成して呼び出しています(グローバルスコープを汚染から保つため)。3行目では新しいコンストラクタ関数を定義して、6行目でそのプロトタイプに、新しいContainerインスタンスを設定しています。これにより、新しいクラスはContainerから全てのプロパティとメソッドを継承します。 58 |

59 |
60 | 61 |
62 |
63 |

初期化関数

64 |
65 | 66 |

67 | 4行目のコンストラクタ内で、initializeメソッドを呼び出し、コンストラクタのパラメータを通過させています。initializeメソッドは新しいインスタンスの全てのセットアップ作業を処理するので、これが呼び出されることが重要です。 68 |

69 |

70 | このクラスでは、Containerinitializeメソッドをオーバーライドすることにより、何らかのカスタムセットアップを行うことができますが、その場合スーパークラスのinitializeメソッドを確実に呼び出す必要があります。特にContainerを継承するクラスの場合、これは非常に重要です。 71 |

72 |

73 | これを行うため、既存のinitializeメソッドを保存しておき(8行目)、再定義し(9行目)、新しいメソッドの最初に、それを呼び出している(10行目)ことを確認してください。 74 |

75 | 76 |
77 |
78 |

仕上げ

79 |
80 |

81 | 最後に、14行目において、我々のアプリケーションで利用できるように、作成したクラスをグローバル(ウィンドウ)スコープに割り当てなおしています。これでクラスをインスタンス化して、その他の表示オブジェクトと同様に、表示リストに追加することが可能になります。 82 |

83 | 87 |

88 | この例を実際に試してみるためにはdemo.htmlとButton.jsをチェックしてください。 89 |

90 | 91 | 92 |
93 | 94 |
95 | 96 | 97 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/HitTest/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EaselJSチュートリアル: hitTestを使う 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

EaselJS: HitTestを使う

21 |

22 | あらすじ: globalToLocalやlocalToLocalと一緒にDisplayObject.hitTestメソッドを使います。
23 | 扱う内容: hitTest, globalToLocal, localToLocal, ヒットの検出
24 | 対象: EaselJS v0.6.0 25 |

26 |
27 | 28 |
29 |
30 |

hitTest

31 |
32 |

33 | hitTestメソッドは、表示オブジェクト内の指定された座標をチェックし、その座標が完全に透明でない場合(すなわち、そのピクセルに描画されている場合)はtrueを返します。これは、特定のオブジェクトがマウスとのヒットの検出下にあるかどうかをチェックするために使用することができます。 34 |

35 | 38 |

39 | 以下のデモは、マウスが赤い円の上にあるかどうかを測定するために、circle.hitTest(stage.mouseX, stage.mouseY)を呼び出します。 40 |

41 | 42 |

43 | この単純な実装は、円が移動したり、変形したりしていない時は正常に動作します。しかし、hitTestはローカル座標空間にあり、それが渡されると期待しています。stage.mouseXstage.mouseYの座標は、グローバル(ステージ)座標です。この動作を確認するには、サンプルファイルであるhitTest.htmlの中にあるcircle.xを変更してみてください。 44 |

45 |
46 | 47 |
48 |
49 |

globalToLocal

50 |
51 |

52 | グローバル座標をローカル座標に変換するには、globalToLocalメソッドを使えます。このメソッドはグローバルのxとyの値を受け取り、目的のオブジェクトの変形を使って変換されたxとyプロパティの含んだオブジェクトを返します(すなわち、親の変形を含みます)。 53 |

54 | 58 |

59 | このコードは、ステージにおけるマウス座標をローカル座標に変換し、それをconsoleに出力するものです。以下のデモは、マウスの下に変形したシェイプがあるかどうかをチェックするために、この同じコードを適用しています。ソースをチェックし、globalToLocal.htmlでどうやってそれが行われているかを確認してください。 60 |

61 | 62 |
63 | 64 |
65 |
66 |

localToLocal

67 |
68 |

69 | globalToLocalメソッドはステージの座標を調べる場合は最適ですが、別の変形したオブジェクトの中の座標を再度hitTestで調べる場合はどうでしょうか?  70 |

71 |

72 | それぞれにlocalToGlobalを使い、その後別のあるオブジェクトの座標空間からまた別のものにglobalToLocalで座標を変換できますが、localToLocalメソッドは、少し少ないコードで同じことを行います。 73 |

74 | 78 |

79 | 以下の例では、回転しているアームの座標(100,0)を、目標のシェイプの相対的な座標に変換するために使われていることを示しており、その座標が目標と交差するときに表示されます。localToLocal.htmlをチェックし、どうやってそれが動いているかを確認してください。 80 |

81 | 82 | 83 |
84 | 85 |
86 | 87 | 88 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/display/Shadow.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Shadow 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 本クラスは{{#crossLink "DisplayObject"}}{{/crossLink}}に適用させる影を定義するのに必要なそのshadowプロパティをカプセル化します 36 | * 37 | *

38 | * myImage.shadow = new createjs.Shadow("#000000", 5, 5, 10); 39 | * 40 | * @class Shadow 41 | * @constructor 42 | * @param {String} color 影の色 43 | * @param {Number} offsetX ピクセル単位でX軸に対する影のオフセット 44 | * @param {Number} offsetY ピクセル単位でY軸に対する影のオフセット 45 | * @param {Number} blur ブラー効果のサイズ 46 | **/ 47 | var Shadow = function(color, offsetX, offsetY, blur) { 48 | this.initialize(color, offsetX, offsetY, blur); 49 | } 50 | var p = Shadow.prototype; 51 | 52 | // 静的パブリックプロパティ: 53 | /** 54 | * shadowオブジェクト識別 (全てのプロパティは0に設定). 読み取り専用 55 | * @property identity 56 | * @type Shadow 57 | * @static 58 | * @final 59 | **/ 60 | Shadow.identity = null; // クラス定義の最後で設定 61 | 62 | // パブリックプロパティ: 63 | /** 影の色 64 | * property color 65 | * @type String 66 | * @default null 67 | */ 68 | p.color = null; 69 | 70 | /** 影のX軸のオフセット 71 | * property offsetX 72 | * @type Number 73 | * @default 0 74 | */ 75 | p.offsetX = 0; 76 | 77 | /** 影のY軸のオフセット 78 | * property offsetY 79 | * @type Number 80 | * @default 0 81 | */ 82 | p.offsetY = 0; 83 | 84 | /** 影のブラー 85 | * property blur 86 | * @type Number 87 | * @default 0 88 | */ 89 | p.blur = 0; 90 | 91 | // コンストラクタ: 92 | /** 93 | * 初期化メソッド 94 | * @method initialize 95 | * @protected 96 | * @param {String} color 影の色 97 | * @param {Number} offsetX 影のX軸のオフセット 98 | * @param {Number} offsetY 影のY軸のオフセット 99 | * @param {Number} blur ブラー効果のサイズ 100 | **/ 101 | p.initialize = function(color, offsetX, offsetY, blur) { 102 | this.color = color; 103 | this.offsetX = offsetX; 104 | this.offsetY = offsetY; 105 | this.blur = blur; 106 | } 107 | 108 | // パブリックメソッド: 109 | /** 110 | * 本オブジェクトを文字列で表現したものを返却する 111 | * @method toString 112 | * @return {String} インスタンスを文字列で表現したもの 113 | **/ 114 | p.toString = function() { 115 | return "[Shadow]"; 116 | } 117 | 118 | 119 | /** 120 | * 本Shadowインスタンスのクローンを返却する 121 | * @method clone 122 | * @return {Shadow} 現在のShadowインスタンスのクローン 123 | **/ 124 | p.clone = function() { 125 | return new Shadow(this.color, this.offsetX, this.offsetY, this.blur); 126 | } 127 | 128 | // これはクラスが定義されてから格納する必要がある: 129 | Shadow.identity = new Shadow("transparent", 0, 0, 0); 130 | 131 | createjs.Shadow = Shadow; 132 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/filters/AlphaMaskFilter.js: -------------------------------------------------------------------------------- 1 | /* 2 | * AlphaMaskFilter 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * マスク画像 (又は canvas) のアルファを対象に適用します。その際、マスクから結果のアルファチャネルがコピーされ、 36 | * RGB チャネルは対象からコピーされます。例えば、表示オブジェクトにアルファマスクを適用するために利用できます。 37 | * また、圧縮された JPG の RGB 画像に PNG32 のアルファマスクを組み合わせば、ARGB 情報を含む単一の PNG32 ファイルよりも 38 | * ずっとファイルサイズを押さえることができます。 39 | * 40 | * 重要:現在、このフィルターは targetCtx また targetX/Y を正しくサポートしていません。 41 | * 42 | * フィルターの使い方の例は {{#crossLink "Filter"}}{{/crossLink}} を参照して下さい。 43 | * @class AlphaMaskFilter 44 | * @extends Filter 45 | * @constructor 46 | * @param {Image} mask 47 | **/ 48 | var AlphaMaskFilter = function(mask) { 49 | this.initialize(mask); 50 | } 51 | var p = AlphaMaskFilter.prototype = new createjs.Filter(); 52 | 53 | // コンストラクタ: 54 | /** @ignore */ 55 | p.initialize = function(mask) { 56 | this.mask = mask; 57 | } 58 | 59 | // パブリックプロパティ: 60 | 61 | /** 62 | * マスクとして使用する画像 (又は canvas) 63 | * @property mask 64 | * @type Image 65 | **/ 66 | p.mask = null; 67 | 68 | // パブリックメソッド: 69 | 70 | /** 71 | * フィルターを指定されたコンテキストに適用します。重要:現在、このフィルターは targetCtx をサポートしません。 72 | * @method applyFilter 73 | * @param {CanvasRenderingContext2D} ctx ソースとして使用する 2D コンテキストです。 74 | * @param {Number} x ソースとして使用する矩形の x 座標です。 75 | * @param {Number} y ソースとして使用する矩形の y 座標です。 76 | * @param {Number} width ソース矩形の幅です。 77 | * @param {Number} height ソース矩形の高さです。 78 | * @param {CanvasRenderingContext2D} targetCtx オプションです。結果を描く 2D コンテキストです。デフォルトは ctx に渡されたコンテキストです。 79 | * @param {Number} targetX Optional. 結果を描く X 座標です。デフォルトは x に渡された値です。 80 | * @param {Number} targetY Optional. 結果を描く Y 座標です。デフォルトは y に渡された値です。 81 | * @return {Boolean} 82 | **/ 83 | p.applyFilter = function(ctx, x, y, width, height, targetCtx, targetX, targetY) { 84 | if (!this.mask) { return true; } 85 | targetCtx = targetCtx || ctx; 86 | if (targetX == null) { targetX = x; } 87 | if (targetY == null) { targetY = y; } 88 | 89 | targetCtx.save(); 90 | if (ctx != targetCtx) { 91 | // TODO: support targetCtx and targetX/Y 92 | // clearRect, then draw the ctx in? 93 | } 94 | 95 | targetCtx.globalCompositeOperation = "destination-in"; 96 | targetCtx.drawImage(this.mask, targetX, targetY); 97 | targetCtx.restore(); 98 | return true; 99 | } 100 | 101 | /** 102 | * このオブジェクトの複製を返します。 103 | * @return {AlphaMaskFilter} 104 | **/ 105 | p.clone = function() { 106 | return new AlphaMaskFilter(this.mask); 107 | } 108 | 109 | /** 110 | * このオブジェクトの文字列での表現を返します。 111 | * @return {String} このオブジェクトの文字列表現です。 112 | **/ 113 | p.toString = function() { 114 | return "[AlphaMaskFilter]"; 115 | } 116 | 117 | // プライベートメソッド: 118 | 119 | 120 | 121 | createjs.AlphaMaskFilter = AlphaMaskFilter; 122 | }()); -------------------------------------------------------------------------------- /ja/TweenJS/0.4.0/src/tweenjs/CSSPlugin.js: -------------------------------------------------------------------------------- 1 | /* 2 | * CSSPlugin 3 | * ドキュメント、更新、例については、 http://createjs.com/ を参照してください。 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | /** 34 | * 数値のCSS文字列プロパティ(例. top, left)と共に動作するTweenJSプラグインです。 35 | * TweenJSがロードされた後に単純にinstallを使用します: 36 | * 37 | * createjs.CSSPlugin.install(); 38 | * 39 | * CSSプロパティは、cssSuffixMapプロパティを修正することで調整できます。 40 | * 現在は、top、left、bottom、right、width、heightは、後ろに "px"サフィックスをつけます。 41 | * @class CSSPlugin 42 | * @constructor 43 | **/ 44 | var CSSPlugin = function() { 45 | throw("CSSPlugin cannot be instantiated.") 46 | } 47 | 48 | // 静的インタフェース: 49 | /** 50 | * CSSトゥイーンのためのディフォルトのサフィックスマップを定義します。これは、個々のトゥイーンにcssSuffixMap値を 51 | * 指定することで、トゥイーン基盤ごとに上書き可能です。このオブジェクトは、それらのプロパティが読み出し、または 52 | * 設定されるときに、サフィックスにCSSプロパティ名をマップします。たとえば、フォーム{top:"px"}のマップは、"top" 53 | * CSSプロパティがトゥイーンするときに"px"サフィックスを指定すべきことを示します(例. target.style.top = "20.5px")。 54 | * これは、"css"コンフィグプロパティをtrueに設定すると共にトゥイーンに適用します。 55 | * @property cssSuffixMap 56 | * @type Object 57 | * @static 58 | **/ 59 | CSSPlugin.cssSuffixMap = {top:"px",left:"px",bottom:"px",right:"px",width:"px",height:"px",opacity:""}; 60 | 61 | /** 62 | * @property priority 63 | * @protected 64 | * @static 65 | **/ 66 | CSSPlugin.priority = -100; // とても低いプライオリティ、最後に実行するべき 67 | 68 | /** 69 | * TweenJSと共に使用するために、このプラグインをインストールします。このプラグインを有効にするために 70 | * TweenJSがロードされた後で一度、これを呼び出してください。 71 | * @method install 72 | * @static 73 | **/ 74 | CSSPlugin.install = function() { 75 | var arr = [], map = CSSPlugin.cssSuffixMap; 76 | for (var n in map) { arr.push(n); } 77 | createjs.Tween.installPlugin(CSSPlugin, arr); 78 | } 79 | 80 | 81 | /** 82 | * @method init 83 | * @protected 84 | * @static 85 | **/ 86 | CSSPlugin.init = function(tween, prop, value) { 87 | var sfx0,sfx1,style,map = CSSPlugin.cssSuffixMap; 88 | if ((sfx0 = map[prop]) == null || !(style = tween.target.style)) { return value; } 89 | var str = style[prop]; 90 | if (!str) { return 0; } // no style set. 91 | var i = str.length-sfx0.length; 92 | if ((sfx1 = str.substr(i)) != sfx0) { 93 | throw("CSSPlugin Error: Suffixes do not match. ("+sfx0+":"+sfx1+")"); 94 | } else { 95 | return parseInt(str.substr(0,i)); 96 | } 97 | } 98 | 99 | /** 100 | * @method step 101 | * @protected 102 | * @static 103 | **/ 104 | CSSPlugin.step = function(tween, prop, startValue, endValue, injectProps) { 105 | // unused 106 | } 107 | 108 | 109 | /** 110 | * @method tween 111 | * @protected 112 | * @static 113 | **/ 114 | CSSPlugin.tween = function(tween, prop, value, startValues, endValues, ratio, wait, end) { 115 | var style,map = CSSPlugin.cssSuffixMap; 116 | if (map[prop] == null || !(style = tween.target.style)) { return value; } 117 | style[prop] = value+map[prop]; 118 | return createjs.Tween.IGNORE; 119 | } 120 | 121 | // パブリックプロパティ: 122 | 123 | // プライベートプロパティ: 124 | 125 | // コンストラクタ: 126 | 127 | // パブリックメソッド: 128 | 129 | 130 | // プライベートメソッド: 131 | 132 | createjs.CSSPlugin = CSSPlugin; 133 | }()); 134 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/filters/Filter.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Filter 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 全てのフィルターが継承するべき基底クラスです。フィルターは {{#crossLink "DisplayObject/cache"}}{{/crossLink}} メソッドを使って 36 | * キャッシュされたオブジェクトに対して適用することが必要です。オブジェクトに変更があった場合は、再キャッシュ 37 | * または {{#crossLink "DisplayObject/updateCache"}}{{/crossLink}} を使用して下さい。 38 | * 39 | *

40 | * myInstance.cache(0,0, 100, 100); 41 | * myInstance.filters = [ 42 | * new createjs.ColorFilter(0, 0, 0, 1, 255, 0, 0), 43 | * new createjs.BoxBlurFilter(5, 5, 10) 44 | * ]; 45 | * 46 | *

EaselJS のフィルター

47 | * EaselJS ではいくつかの構築済みのフィルターが提供されています。個々のフィルターは最小化されたバージョンの 48 | * EaselJS には含まれないことに注意して下さい。それらを使用する際は、HTML に明示的に含める必要があります。 49 | * 55 | * 56 | * @class Filter 57 | * @constructor 58 | **/ 59 | var Filter = function() { 60 | this.initialize(); 61 | } 62 | var p = Filter.prototype; 63 | 64 | // コンストラクタ: 65 | /** 66 | * 初期化用のメソッドです。 67 | * @method initialize 68 | * @protected 69 | **/ 70 | p.initialize = function() {} 71 | 72 | // パブリックメソッド: 73 | /** 74 | * フィルターの描画に必要なマージンを示す rectangle オブジェクトを返します。 75 | * 例えば、描画領域を左に 4 ピクセル、右に 7 ピクセル広げるフィルターの場合 76 | * (ただし上下方向には広がらない)返される rectangle の値は (x=-4, y=0, width=11, height=0) になります。 77 | * @method getBounds 78 | * @return {Rectangle} フィルターの描画に必要なマージンを示す rectangle オブジェクトです。 79 | **/ 80 | p.getBounds = function() { 81 | return new createjs.Rectangle(0,0,0,0); 82 | } 83 | 84 | /** 85 | * 指定されたコンテキストにフィルターを適用します。 86 | * @method applyFilter 87 | * @param {CanvasRenderingContext2D} ctx ソースとして使用する 2D コンテキストです。 88 | * @param {Number} x ソースとして使用する矩形の x 座標です。 89 | * @param {Number} y ソースとして使用する矩形の y 座標です。 90 | * @param {Number} width ソース矩形の幅です。 91 | * @param {Number} height ソース矩形の高さです。 92 | * @param {CanvasRenderingContext2D} targetCtx オプションです。結果を描く 2D コンテキストです。デフォルトは ctx に渡されたコンテキストです。 93 | * @param {Number} targetX Optional. 結果を描く X 座標です。デフォルトは x に渡された値です。 94 | * @param {Number} targetY Optional. 結果を描く Y 座標です。デフォルトは y に渡された値です。 95 | * @return {Boolean} 96 | **/ 97 | p.applyFilter = function(ctx, x, y, width, height, targetCtx, targetX, targetY) {} 98 | 99 | /** 100 | * このオブジェクトの文字列での表現を返します。 101 | * @method toString 102 | * @return {String} このインスタンスの文字列表現です。 103 | **/ 104 | p.toString = function() { 105 | return "[Filter]"; 106 | } 107 | 108 | 109 | /** 110 | * この Filter インスタンスの複製を返します。 111 | * @method clone 112 | @return {Filter} 現在の Filter インスタンスの複製です。 113 | **/ 114 | p.clone = function() { 115 | return new Filter(); 116 | } 117 | 118 | createjs.Filter = Filter; 119 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/utils/Log.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Log 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * Log はエラー出力を一括管理する仕組みを提供します。デフォルトでは、メッセージの出力先として console.log が使用されます。 36 | * しかし、これは out 属性の設定により変更できます。 37 | * @class Log 38 | * @constructor 39 | **/ 40 | var Log = {}; 41 | 42 | /** 43 | * 読み取り専用。メッセージを何も出力しません。 44 | * @type Number 45 | * @property NONE 46 | * @default 0 47 | * @static 48 | **/ 49 | Log.NONE = 0; 50 | 51 | /** 52 | * 読み取り専用。エラーメッセージを出力します。 53 | * @type Number 54 | * @property ERROR 55 | * @default 1 56 | * @static 57 | **/ 58 | Log.ERROR = 1; 59 | 60 | /** 61 | * 読み取り専用。警告メッセージを出力します。 62 | * @type Number 63 | * @property WARNING 64 | * @default 2 65 | * @static 66 | **/ 67 | Log.WARNING = 2; 68 | 69 | /** 70 | * 読み取り専用。トレース文を出力します。 71 | * @type Number 72 | * @property TRACE 73 | * @default 3 74 | * @static 75 | **/ 76 | Log.TRACE = 3; 77 | 78 | /** 79 | * 読み取り専用。全てのメッセージを出力します。 80 | * @type Number 81 | * @property ALL 82 | * @default 255 83 | * @static 84 | **/ 85 | Log.ALL = 255; 86 | 87 | /** 88 | * 全てのログされたメッセージを扱う際に使用される関数を定義します。デフォルトでは console.log を使用します。 89 | * 指定された関数には、Log.log と同じ 3 つの引数が渡されます。一致するキーが見つかった場合、メッセージは 90 | * 拡張されます。

91 | * 例えば、全てのメッセージをサーバーに送信したり、テキストエリアに出力するといった使い方が可能です。値を null に 92 | * 設定することで、全てのログを無効にすることもできます。

93 | * 全てのメッセージは、レベルの競ってに関わらず、out 関数に渡されます。そのため、関数にはレベルを正しく処理する 94 | * ことが求められます。これは、全てのメッセージをサーバーに送信しながら、現在のレベル以下のメッセージは UI に 95 | * 表示するといった使い方を可能にするためです。 96 | * @type Function 97 | * @property out 98 | * @static 99 | **/ 100 | Log.out = function(message, details, level) { 101 | if (level<=Log.level && window.console) { 102 | if (details === undefined) { console.log(message); } 103 | else { console.log(message, details); } 104 | } 105 | }; 106 | 107 | /** 108 | * 出力するメッセージのレベルを指定します。例えば、Log.level = Log.WARNING と設定すると、 109 | *レベル 2 (Log.WARNING) またはそれ以下 (例: Log.ERROR) のメッセージが出力されます。デフォルト値は Log.ALL です。 110 | * @type Function 111 | * @property out 112 | * @default 255 113 | * @static 114 | **/ 115 | Log.level = 255; 116 | 117 | /** 118 | * @property _keys 119 | * @static 120 | * @type Array 121 | * @protected 122 | **/ 123 | Log._keys = []; 124 | 125 | /** 126 | * キーと長いメッセージを関連づけるオブジェクトを追加します。 127 | * メッセージにはオプションとして "%DETAILS%" を含めることができます。"%DETAILS%" は error に渡された 128 | * 任意の詳細と置き換えられます。例えば、
129 | * Log.addKeys( {MY_ERROR:"これは私のエラーの [%DETAILS%]" 番目の記述です} ); 130 | * Log.error( "MY_ERROR" , 5 ); // "これは私のエラーの [5]" 番目の記述です" が出力される 131 | * @param {Object} keys キーとメッセージを定義するオブジェクト 132 | * @static 133 | * @method addKeys 134 | **/ 135 | Log.addKeys = function(keys) { 136 | Log._keys.unshift(keys); 137 | }; 138 | 139 | /** 140 | * out 属性に設定されたメソッドを使い、指定されたエラーを出力します。エラーが定義済みのキーに一致した場合は 141 | * 定義されているメッセージで置き換えられます。 142 | * @param {String} message 出力するエラーメッセージもしくはキー 143 | * @param {Object} details メッセージと関連する任意の詳細情報 144 | * @param {Number} level メッセージの重要性を指定する 1 と 254 の間の数字。詳細は Log.level を参照。 145 | * @static 146 | * @method error 147 | **/ 148 | Log.log = function(message, details, level) { 149 | var out = Log.out; 150 | if (!out) { return; } 151 | var keys = Log._keys; 152 | if (level == null) { level = 3; } 153 | 154 | for (var i=0; i
91 | * 例えば、全てのメッセージをサーバーに送信したり、テキストエリアに出力するといった使い方が可能です。値を null に 92 | * 設定することで、全てのログを無効にすることもできます。

93 | * 全てのメッセージは、レベルの競ってに関わらず、out 関数に渡されます。そのため、関数にはレベルを正しく処理する 94 | * ことが求められます。これは、全てのメッセージをサーバーに送信しながら、現在のレベル以下のメッセージは UI に 95 | * 表示するといった使い方を可能にするためです。 96 | * @type Function 97 | * @property out 98 | * @static 99 | **/ 100 | Log.out = function(message, details, level) { 101 | if (level<=Log.level && window.console) { 102 | if (details === undefined) { console.log(message); } 103 | else { console.log(message, details); } 104 | } 105 | }; 106 | 107 | /** 108 | * 出力するメッセージのレベルを指定します。例えば、Log.level = Log.WARNING と設定すると、 109 | *レベル 2 (Log.WARNING) またはそれ以下 (例: Log.ERROR) のメッセージが出力されます。デフォルト値は Log.ALL です。 110 | * @type Function 111 | * @property out 112 | * @default 255 113 | * @static 114 | **/ 115 | Log.level = 255; 116 | 117 | /** 118 | * @property _keys 119 | * @static 120 | * @type Array 121 | * @protected 122 | **/ 123 | Log._keys = []; 124 | 125 | /** 126 | * キーと長いメッセージを関連づけるオブジェクトを追加します。 127 | * メッセージにはオプションとして "%DETAILS%" を含めることができます。"%DETAILS%" は error に渡された 128 | * 任意の詳細と置き換えられます。例えば、
129 | * Log.addKeys( {MY_ERROR:"これは私のエラーの [%DETAILS%]" 番目の記述です} ); 130 | * Log.error( "MY_ERROR" , 5 ); // "これは私のエラーの [5]" 番目の記述です" が出力される 131 | * @param {Object} keys キーとメッセージを定義するオブジェクト 132 | * @static 133 | * @method addKeys 134 | **/ 135 | Log.addKeys = function(keys) { 136 | Log._keys.unshift(keys); 137 | }; 138 | 139 | /** 140 | * out 属性に設定されたメソッドを使い、指定されたエラーを出力します。エラーが定義済みのキーに一致した場合は 141 | * 定義されているメッセージで置き換えられます。 142 | * @param {String} message 出力するエラーメッセージもしくはキー 143 | * @param {Object} details メッセージと関連する任意の詳細情報 144 | * @param {Number} level メッセージの重要性を指定する 1 と 254 の間の数字。詳細は Log.level を参照。 145 | * @static 146 | * @method error 147 | **/ 148 | Log.log = function(message, details, level) { 149 | var out = Log.out; 150 | if (!out) { return; } 151 | var keys = Log._keys; 152 | if (level == null) { level = 3; } 153 | 154 | for (var i=0; i
91 | * 例えば、全てのメッセージをサーバーに送信したり、テキストエリアに出力するといった使い方が可能です。値を null に 92 | * 設定することで、全てのログを無効にすることもできます。

93 | * 全てのメッセージは、レベルの競ってに関わらず、out 関数に渡されます。そのため、関数にはレベルを正しく処理する 94 | * ことが求められます。これは、全てのメッセージをサーバーに送信しながら、現在のレベル以下のメッセージは UI に 95 | * 表示するといった使い方を可能にするためです。 96 | * @type Function 97 | * @property out 98 | * @static 99 | **/ 100 | Log.out = function(message, details, level) { 101 | if (level<=Log.level && window.console) { 102 | if (details === undefined) { console.log(message); } 103 | else { console.log(message, details); } 104 | } 105 | }; 106 | 107 | /** 108 | * 出力するメッセージのレベルを指定します。例えば、Log.level = Log.WARNING と設定すると、 109 | *レベル 2 (Log.WARNING) またはそれ以下 (例: Log.ERROR) のメッセージが出力されます。デフォルト値は Log.ALL です。 110 | * @type Function 111 | * @property out 112 | * @default 255 113 | * @static 114 | **/ 115 | Log.level = 255; 116 | 117 | /** 118 | * @property _keys 119 | * @static 120 | * @type Array 121 | * @protected 122 | **/ 123 | Log._keys = []; 124 | 125 | /** 126 | * キーと長いメッセージを関連づけるオブジェクトを追加します。 127 | * メッセージにはオプションとして "%DETAILS%" を含めることができます。"%DETAILS%" は error に渡された 128 | * 任意の詳細と置き換えられます。例えば、
129 | * Log.addKeys( {MY_ERROR:"これは私のエラーの [%DETAILS%]" 番目の記述です} ); 130 | * Log.error( "MY_ERROR" , 5 ); // "これは私のエラーの [5]" 番目の記述です" が出力される 131 | * @param {Object} keys キーとメッセージを定義するオブジェクト 132 | * @static 133 | * @method addKeys 134 | **/ 135 | Log.addKeys = function(keys) { 136 | Log._keys.unshift(keys); 137 | }; 138 | 139 | /** 140 | * out 属性に設定されたメソッドを使い、指定されたエラーを出力します。エラーが定義済みのキーに一致した場合は 141 | * 定義されているメッセージで置き換えられます。 142 | * @param {String} message 出力するエラーメッセージもしくはキー 143 | * @param {Object} details メッセージと関連する任意の詳細情報 144 | * @param {Number} level メッセージの重要性を指定する 1 と 254 の間の数字。詳細は Log.level を参照。 145 | * @static 146 | * @method error 147 | **/ 148 | Log.log = function(message, details, level) { 149 | var out = Log.out; 150 | if (!out) { return; } 151 | var keys = Log._keys; 152 | if (level == null) { level = 3; } 153 | 154 | for (var i=0; iinstallメソッドも公開しています。けれども、これは厳密には必要ありません。 39 | * @class SamplePlugin 40 | * @constructor 41 | **/ 42 | var SamplePlugin = function() { 43 | throw("SamplePlugin cannot be instantiated.") 44 | }; 45 | 46 | // 静的インタフェース: 47 | /** 48 | * TweenJSによって、このプラグインを呼ぶときに決定するために使われます。高プライオリティのプラグインは、 49 | * 低プライオリティのプラグインの前に呼ばれるメソッドを持っています。priorityの値は、任意の正または負の数値です。 50 | * @property priority 51 | * @static 52 | **/ 53 | SamplePlugin.priority = 0; 54 | 55 | /** 56 | * TweenJSと一緒に使用するために、このプラグインをインストールします。そして、このプラグインが扱うプロパティのリストを 57 | * 登録します。このプラグインを有効にするために、TweenJSがロードされた後で一度、これを呼び出してください。 58 | * @method install 59 | * @static 60 | **/ 61 | SamplePlugin.install = function() { 62 | // "test"プロパティで動作するためにこのプラグインを登録します。 63 | createjs.Tween.installPlugin(SamplePlugin, ["test"]); 64 | }; 65 | 66 | /** 67 | * このプラグインが登録される新しいトゥイーンプロパティが初期化するときにTweenJSによって呼ばれます。 68 | * 一般的に、Plugin.init呼び出しは、Plugin.toに続いて即座に行われます。 69 | * @method init 70 | * @param {Tween} tween 関連するトゥイーンインスタンス。 71 | * @param {String} prop 初期化されるプロパティの名前。 72 | * @param {any} value トゥインのターゲット上のプロパティの現在値。 73 | * @return {any} プロパティの開始トゥイーン値。多くの場合、単に値のパラメータを返します。 74 | * しかし、いくつかのプラグインは開始値の変更が必要になるかもしれません。 75 | * @static 76 | **/ 77 | SamplePlugin.init = function(tween, prop, value) { 78 | console.log("init", prop, value); 79 | 80 | // 修正なしのプロパティ値を返します: 81 | return value; 82 | }; 83 | 84 | /** 85 | * プラグインが登録されるプロパティを含むトゥイーンに新しいステップが追加されるときにTweenJSによって呼び出されます。 86 | * (すなわち、新しい"to"アクションがトゥイーンに追加されるとき)。 87 | * @param {Tween} tween 関連するトゥイーンインスタンス。 88 | * @param {String} prop トゥイーンされるプロパティの名前。 89 | * @param {any} startValue 始まりのステップにおけるプロパティの値。もし、これが最初のステップなら、初期値と同じになります。 90 | * もしくは、そうでないなら、前のステップのendValueと同じになります。 91 | * @param {Object} injectProps プラグインが、このステップ上で更新すべき他のプロパティに追加できる汎用オブジェクト。 92 | * @param {any} endValue 最後のステップにおけるプロパティの値。 93 | * @static 94 | **/ 95 | SamplePlugin.step = function(tween, prop, startValue, endValue, injectProps) { 96 | console.log("to: ", prop, startValue, endValue); 97 | }; 98 | 99 | /** 100 | * このプラグインが登録されるトゥイーンプロパティを進めるときに呼び出されます。 101 | * @method tween 102 | * @param {Tween} tween 関連するトゥイーンインスタンス。 103 | * @param {String} prop トゥイーンされるプロパティの名前。 104 | * @param {any} value TweenJSによって計算された、プロパティの現在のトゥイーンされた値。 105 | * @param {Object} startValues 現在のステップの始まりにおけるすべてのプロパティのハッシュ値。startValues[prop]を 106 | * 使うことで現在のプロパティの開始値にアクセスできます。 107 | * @param {Object} endValues 現在のステップの終わりにおけるすべてのプロパティのハッシュ値。 108 | * @param {Number} ratio 現在のステップでのイースのプログレスを示す値。この数値は通常0と1の間になります。 109 | * けれども、いくつかのイースはこの範囲外の値を生成します。 110 | * @param {Boolean} wait 現在のステップが"wait"ステップかどうかを示します。 111 | * @param {Boolean} end トゥイーンが終わりに到達したかどうかを示します。 112 | * @return {any} ターゲットプロパティに代入された値を返します。たとえば、Math.round(value)は、 113 | * 整数としての計算値を代入します。Tween.IGNOREは、ターゲットプロパティに値を代入するのを防ぎます。 114 | * @static 115 | **/ 116 | SamplePlugin.tween = function(tween, prop, value, startValues, endValues, ratio, wait, end) { 117 | // ratioは、イースされたratio 118 | console.log("tween", prop, value, ratio, wait, end); 119 | 120 | // 修正されていないトゥイーン値を返します(ディフォルトのトゥイーンのふるまいを使います): 121 | return value; 122 | }; 123 | 124 | createjs.SamplePlugin = SamplePlugin; 125 | }()); 126 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Getting Started/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EaselJSチュートリアル: はじめかた 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

EaselJS: はじめかた

21 |

22 | あらすじ: canvasタグとEaselJSライブラリを使ってHTMLドキュメントを準備し、ステージにシェイプを描きます。
23 | 扱う内容: ライブラリへのリンク, ステージ, シェイプ, addChild, Stage.update(), CDN, ソースファイル
24 | 対象: EaselJS v0.6.0 25 |

26 |
27 | 28 |
29 |
30 |

HTMLドキュメントを準備する

31 |
32 |

33 | 以下は、動作に必要となる要素のみにしたHTMLドキュメントです。 34 |

35 | 53 |

54 | EaselJSを使うために、4行目のscriptタグでEaselJSライブラリを読み込んでいます。読み込み方にはいくつかのオプションがあります。

    55 |
  1. ローカルにコピーしたコンパイル済みライブラリにリンクする(上記サンプルの方法)。
  2. 56 |
  3. CreateJS CDNに置かれたコンパイル済みライブラリにリンクする。ライブラリを利用する全サイトにまたがってキャッシュが有効になりますが、安定版(stable versions)しか利用できません。
  4. 57 |
  5. 未コンパイルの個別のソースファイルにリンクする(/src/ディレクトリ内)。エラーを検知しやすくなるため、デバッグやライブラリの学習に非常に役立ちます。ただし、/build/build.jsに書かれている順番通りに正しく読み込まなければなりません(訳注:実際には/build/config.jsonに外部化して書かれています)。
  6. 58 |
59 |

60 |

61 | 5行目のscriptタグには、ページが読み込み終わったときに呼ばれる空の関数が含まれています。後ほどJavaScriptを書こうとしているのが7行目です。 62 |

63 |

64 | 12行目のcanvasタグは、容易に参照できるようidを持たせ、さらに幅と高さを定義します。canvasのピクセルサイズは、width属性とheight属性で決まっていることを理解しておきましょう。もしCSSで幅と高さを変更すると、canvasの拡大率が変更されて描画結果がぼやけたり、ピクセルが目立ったりします。 65 |

66 |
67 | 68 |
69 |
70 |

ステージを準備する

71 |
72 |

73 | コードを追加していきましょう。canvasに描画するためのステージを定義するところから始めます。

74 |

75 | 78 |

79 | この行では、新しいStageを作成し、それをcanvasに関連付けています。ステージには、canvasに描画するすべての表示オブジェクトが含まれています。使いたいcanvasのID、または参照のどちらかを渡します。 80 |

81 |

82 | Stageクラスの定義が名前空間createjsの中にあることに気づくでしょう。これにより、CreateJSのすべてのクラスが他のライブラリのクラスと衝突することを避けています。別の名前空間に変更したい場合は、ライブラリを読み込む前に変数createjsの参照を他に置き換えます。 83 |

84 |
85 | 86 |
87 |
88 |

シェイプを作る

89 |
90 |

91 | 続いて、Shapeオブジェクトを作り、それに赤い円を描き、配置し、ステージに追加します。 92 |

93 | 100 |

101 | 1行目では新しいShapeインスタンスを作成します。シェイプは、canvasにベクターグラフィックを描画する表示オブジェクトです。すべての表示オブジェクトは、3、4行目のxyのように、canvasに配置するためのプロパティを持っています。 102 |

103 | シェイプは、ベクターグラフィックを定義するためのすべてのメソッドを保持したGraphicsインスタンスを示す、graphicsという特別なプロパティを持っています。このケースでは、graphicsオブジェクトに「0,0(シェイプの位置からの相対座標)を中心とする半径50の円を描き、赤で塗る」と命令しています。 104 |

105 | 5行目に示されるように、表示オブジェクトを描画するためには、ステージに追加する必要があります。 106 |

107 | EaselJSは、連鎖して命令を実行するためのショートカットをサポートしています。必要であれば上記のコードを1行で書くことができます。 108 |

109 | 112 |
113 | 114 |
115 |
116 |

ステージを更新する

117 |
118 |

119 | 表示リストの準備ができましたが、ステージをupdateするまではcanvasに描かれません。 120 |

121 | 124 |

125 | これはステージに「canvasをクリアした後、すべての子オブジェクトを描画する」と命令しています。以下に動作デモを見ることができます。これを開いて、完成したコードをチェックしてください。 126 |

127 | 128 |
129 | 130 |
131 | 132 | 133 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/display/Shape.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Shape 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * Shapeは、ディスプレイリストにおいてベクターアートを表示することを可能にします。それは、すべてのベクター描画メソッドを 36 | * 公開する {{#crossLink "Graphics"}}{{/crossLink}} インタフェースを構成します。グラフィックインタフェースは、複数の 37 | * Shape間で同じベクターグラフィックスを異なった位置もしくは変形で表示するために共有が可能です。 38 | * 39 | * ベクターアートが描画間で変更されないなら、レンダリングコストを削減するために {{#crossLink "DisplayObject/cache"}}{{/crossLink}} 40 | * メソッドを使いたいと思うかも知れません。 41 | * 42 | *

43 | * var graphics = new createjs.Graphics().beginFill("#ff0000").drawRect(0, 0, 100, 100); 44 | * var shape = new createjs.Shape(graphics); 45 | * 46 | * //あるいは、上と同じ描画のためにShapeクラスのグラフィックスプロパティを使うこともできます。 47 | * var shape = new createjs.Shape(); 48 | * shape.graphics.beginFill("#ff0000").drawRect(0, 0, 100, 100); 49 | * 50 | * @class Shape 51 | * @extends DisplayObject 52 | * @constructor 53 | * @param {Graphics} graphics オプション。表示のためのグラフィックスインタフェース。nullなら、新しいグラフィックスインタフェースが作成されます。 54 | **/ 55 | var Shape = function(graphics) { 56 | this.initialize(graphics); 57 | } 58 | var p = Shape.prototype = new createjs.DisplayObject(); 59 | 60 | // パブリックプロパティ: 61 | /** 62 | * 表示のためのグラフィックスインタフェース。 63 | * @property graphics 64 | * @type Graphics 65 | **/ 66 | p.graphics = null; 67 | 68 | // コンストラクタ: 69 | /** 70 | * @property DisplayObject_initialize 71 | * @private 72 | * @type Function 73 | **/ 74 | p.DisplayObject_initialize = p.initialize; 75 | 76 | /** 77 | * 初期化メソッド。 78 | * @method initialize 79 | * @param {Graphics} graphics 80 | * @protected 81 | **/ 82 | p.initialize = function(graphics) { 83 | this.DisplayObject_initialize(); 84 | this.graphics = graphics ? graphics : new createjs.Graphics(); 85 | } 86 | 87 | /** 88 | * キャンバスに描かれる際にShapeが可視かどうかを示すブール値を返します。これは、ステージの境界内に 89 | * 可視かどうかを考慮することはありません 90 | * NOTE: このメソッドは、高度な目的で使用する場合に有用かも知れませんが、主に内部で使用するためのものです。 91 | * @method isVisible 92 | * @return {Boolean} キャンバスに描かれる際にShapeが可視かどうかを示すブール値。 93 | **/ 94 | p.isVisible = function() { 95 | var hasContent = this.cacheCanvas || (this.graphics && !this.graphics.isEmpty()); 96 | return !!(this.visible && this.alpha > 0 && this.scaleX != 0 && this.scaleY != 0 && hasContent); 97 | }; 98 | 99 | /** 100 | * @property DisplayObject_draw 101 | * @private 102 | * @type Function 103 | **/ 104 | p.DisplayObject_draw = p.draw; 105 | 106 | /** 107 | * 指定されたコンテキストに、visible, alpha, shadow, transformを無視してShapeを描画します。 108 | * 描画が処理された場合はtrueを返します(オーバーライド機能に便利)。 109 | * 110 | * NOTE: このメソッドは、高度な目的で使用する場合に有用かも知れませんが、主に内部で使用するためのものです。 111 | * @method draw 112 | * @param {CanvasRenderingContext2D} ctx 描きこむキャンバス2Dコンテキスト。 113 | * @param {Boolean} ignoreCache 描画操作が現在のキャッシュを無視するかどうかを指定します。 114 | * たとえば、キャッシュを描画するために使用されます(自身に戻って単に既存キャッシュを描画することを防ぐために)。 115 | **/ 116 | p.draw = function(ctx, ignoreCache) { 117 | if (this.DisplayObject_draw(ctx, ignoreCache)) { return true; } 118 | this.graphics.draw(ctx); 119 | return true; 120 | } 121 | 122 | /** 123 | * このShapeのクローンを返します。このインスタンスの現在のコンテキストに指定されたいくつかのプロパティは 124 | * ディフォルトに戻されます(例 .parent) 125 | * @method clone 126 | * @param {Boolean} recursive trueなら、このShapeの {{#crossLink "Graphics"}}{{/crossLink}} インスタンスもクローンされます。 127 | * falseなら、グラフィックスインタフェースは、新しいShapeと共有されます。 128 | **/ 129 | p.clone = function(recursive) { 130 | var o = new Shape((recursive && this.graphics) ? this.graphics.clone() : this.graphics); 131 | this.cloneProps(o); 132 | return o; 133 | } 134 | 135 | /** 136 | * このオブジェクトの文字列表現を返します。 137 | * @method toString 138 | * @return {String} インスタンスの文字列表現。 139 | **/ 140 | p.toString = function() { 141 | return "[Shape (name="+ this.name +")]"; 142 | } 143 | 144 | createjs.Shape = Shape; 145 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/filters/AlphaMapFilter.js: -------------------------------------------------------------------------------- 1 | /* 2 | * AlphaMapFilter 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * グレースケールのアルファマップ画像 (又は canvas) を対象に適用します。その際、マップの赤のチャネルが結果のアルファチャネルに 36 | * コピーされます。RGB チャネルは対象からコピーされます。 37 | * 38 | * 一般的には、パフォーマンす上の観点から {{#crossLink "AlphaMaskFilter"}}{{/crossLink}} の使用が推奨されます。 39 | * 40 | * フィルターの使い方の例は {{#crossLink "Filter"}}{{/crossLink}} を参照して下さい。 41 | * @class AlphaMapFilter 42 | * @extends Filter 43 | * @constructor 44 | * @param {Image} alphaMap 出力のアルファ値として使用するグレースケール画像 (又は canvas) です。縦横のサイズは対象と同じにします。 45 | **/ 46 | var AlphaMapFilter = function(alphaMap) { 47 | this.initialize(alphaMap); 48 | } 49 | var p = AlphaMapFilter.prototype = new createjs.Filter(); 50 | 51 | // コンストラクタ: 52 | /** @ignore */ 53 | p.initialize = function(alphaMap) { 54 | this.alphaMap = alphaMap; 55 | } 56 | 57 | // パブリックプロパティ: 58 | 59 | /** 60 | * 結果のアルファ値として使用するグレースケール画像 (又は canvas) です。縦横のサイズは対象と同じにします。 61 | * @property alphaMap 62 | * @type Image 63 | **/ 64 | p.alphaMap = null; 65 | 66 | // プライベートプロパティ : 67 | p._alphaMap = null; 68 | p._mapData = null; 69 | 70 | // パブリックメソッド: 71 | 72 | /** 73 | * フィルターを指定されたコンテキストに適用します。 74 | * @method applyFilter 75 | * @param {CanvasRenderingContext2D} ctx ソースとして使用する 2D コンテキストです。 76 | * @param {Number} x ソースとして使用する矩形の x 座標です。 77 | * @param {Number} y ソースとして使用する矩形の y 座標です。 78 | * @param {Number} width ソース矩形の幅です。 79 | * @param {Number} height ソース矩形の高さです。 80 | * @param {CanvasRenderingContext2D} targetCtx オプションです。結果を描く 2D コンテキストです。デフォルトは ctx に渡されたコンテキストです。 81 | * @param {Number} targetX Optional. 結果を描く X 座標です。デフォルトは x に渡された値です。 82 | * @param {Number} targetY Optional. 結果を描く Y 座標です。デフォルトは y に渡された値です。 83 | * @return {Boolean} 84 | **/ 85 | p.applyFilter = function(ctx, x, y, width, height, targetCtx, targetX, targetY) { 86 | if (!this.alphaMap) { return true; } 87 | if (!this._prepAlphaMap()) { return false; } 88 | targetCtx = targetCtx || ctx; 89 | if (targetX == null) { targetX = x; } 90 | if (targetY == null) { targetY = y; } 91 | 92 | try { 93 | var imageData = ctx.getImageData(x, y, width, height); 94 | } catch(e) { 95 | //if (!this.suppressCrossDomainErrors) throw new Error("unable to access local image data: " + e); 96 | return false; 97 | } 98 | var data = imageData.data; 99 | var map = this._mapData; 100 | var l = data.length; 101 | for (var i=0; i例 39 | * var bitmap = new createjs.Bitmap("imagePath.jpg"); 40 | * 41 | * 注意: 引数に与えたファイルのパス文字列あるいはimageタグがまだ読み込まれていない場合、描画するためにstageを再描画する必要があるときがあります。 42 | * 43 | * @class Bitmap 44 | * @extends DisplayObject 45 | * @constructor 46 | * @param {Image | HTMLCanvasElement | HTMLVideoElement | String} imageOrUri 表示するソースオブジェクトあるいは画像のURI。 47 | * Image, Canvas, Videoオブジェクト, あるいは画像ファイルのURL文字列のいずれかを使用できます。 48 | * 画像ファイルのURL文字列の場合は、新しくImageオブジェクトが生成され.imageプロパティに代入されます。 49 | **/ 50 | var Bitmap = function(imageOrUri) { 51 | this.initialize(imageOrUri); 52 | } 53 | var p = Bitmap.prototype = new createjs.DisplayObject(); 54 | 55 | // パブリックプロパティ: 56 | /** 57 | * 描画するイメージです。Image, Canvas, Videoのいずれかです。 58 | * @property image 59 | * @type Image | HTMLCanvasElement | HTMLVideoElement 60 | **/ 61 | p.image = null; 62 | 63 | /** 64 | * Bitmapをcanvasに描画するときにピクセル座標にスナッピングするか否かを指定します。 65 | * @property snapToPixel 66 | * @type Boolean 67 | * @default true 68 | **/ 69 | p.snapToPixel = true; 70 | 71 | /** 72 | * ソースとなる画像の描画する範囲を指定します。指定しなかった場合、画像全体が描画されます。 73 | * @property sourceRect 74 | * @type Rectangle 75 | * @default null 76 | */ 77 | p.sourceRect = null; 78 | 79 | // コンストラクタ: 80 | 81 | /** 82 | * @property DisplayObject_initialize 83 | * @type Function 84 | * @private 85 | **/ 86 | p.DisplayObject_initialize = p.initialize; 87 | 88 | /** 89 | * 初期化を行います。 90 | * @method initialize 91 | * @protected 92 | **/ 93 | p.initialize = function(imageOrUri) { 94 | this.DisplayObject_initialize(); 95 | if (typeof imageOrUri == "string") { 96 | this.image = new Image(); 97 | this.image.src = imageOrUri; 98 | } else { 99 | this.image = imageOrUri; 100 | } 101 | } 102 | 103 | // パブリックメソッド: 104 | 105 | /** 106 | * 表示オブジェクトがcanvasに描画されている場合、それが可視であるか否かを示します。 107 | * これは、ステージの範囲内に表示されているか否かを示すものではありません。 108 | * 注意: このメソッドは主に内部での使用を意図したものですが、高度な使用において役に立つでしょう。 109 | * @method isVisible 110 | * @return {Boolean} Boolean 表示オブジェクトがcanvasに描画されている場合、それが可視であるか否かを示します。 111 | **/ 112 | p.isVisible = function() { 113 | var hasContent = this.cacheCanvas || (this.image && (this.image.complete || this.image.getContext || this.image.readyState >= 2)); 114 | return !!(this.visible && this.alpha > 0 && this.scaleX != 0 && this.scaleY != 0 && hasContent); 115 | } 116 | 117 | /** 118 | * @property DisplayObject_draw 119 | * @type Function 120 | * @private 121 | **/ 122 | p.DisplayObject_draw = p.draw; 123 | 124 | /** 125 | * 表示オブジェクトを、visible, alpha, shadow, そしてtransformの設定を無視して、指定されたコンテキストで描画します。 126 | * 描画された場合にtrueを返します(機能をオーバーライドする場合に有用です)。 127 | * 注意: このメソッドは主に内部での使用を意図したものですが、高度な使用において役に立つでしょう。 128 | * @method draw 129 | * @param {CanvasRenderingContext2D} ctx canvas2Dコンテキストオブジェクトです。 130 | * @param {Boolean} ignoreCache 描画において保存しているキャッシュを無視するか否かを指定します。 131 | * 例えば、キャッシュを再構築するのに使われます。(既存のキャッシュが再利用されるのを防ぐために) 132 | **/ 133 | p.draw = function(ctx, ignoreCache) { 134 | if (this.DisplayObject_draw(ctx, ignoreCache)) { return true; } 135 | var rect = this.sourceRect; 136 | if (rect) { 137 | ctx.drawImage(this.image, rect.x, rect.y, rect.width, rect.height, 0, 0, rect.width, rect.height); 138 | } else { 139 | ctx.drawImage(this.image, 0, 0); 140 | } 141 | return true; 142 | } 143 | 144 | // 注意, このセクションのAPIはBitmapから指定されたAPI(DislayObjectのもの)を使用しています。 145 | // Bitmapには実装がありません。 146 | 147 | /** 148 | * Bitmapインスタンスの内容は既に単純なフォーマットであるため、キャッシュは不要です。 149 | * パフォーマンスを下げるのでBitmapインスタンスをキャッシュすべきではありません。 150 | * @method cache 151 | **/ 152 | 153 | /** 154 | * Bitmapインスタンスの内容は既に単純なフォーマットであるため、キャッシュは不要です。 155 | * パフォーマンスを下げるのでBitmapインスタンスをキャッシュすべきではありません。 156 | * @method updateCache 157 | **/ 158 | 159 | /** 160 | * Bitmapインスタンスの内容は既に単純なフォーマットであるため、キャッシュは不要です。 161 | * パフォーマンスを下げるのでBitmapインスタンスをキャッシュすべきではありません。 162 | * @method uncache 163 | **/ 164 | 165 | /** 166 | * Bitmapインスタンスのクローンを返します。 167 | * @method clone 168 | * @return {Bitmap} Bitmapインスタンスのクローンです。 169 | **/ 170 | p.clone = function() { 171 | var o = new Bitmap(this.image); 172 | if (this.sourceRect) { o.sourceRect = this.sourceRect.clone(); } 173 | this.cloneProps(o); 174 | return o; 175 | } 176 | 177 | /** 178 | * オブジェクトの文字列表現を返します。 179 | * @method toString 180 | * @return {String} オブジェクトの文字列表現です。 181 | **/ 182 | p.toString = function() { 183 | return "[Bitmap (name="+ this.name +")]"; 184 | } 185 | 186 | // プライベートメソッド: 187 | 188 | createjs.Bitmap = Bitmap; 189 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/filters/ColorFilter.js: -------------------------------------------------------------------------------- 1 | /* 2 | * ColorFilter 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * 色の変換を適用します。 36 | * 37 | * フィルターの使い方の例は {{#crossLink "Filter"}}{{/crossLink}} を参照して下さい。 38 | * @class ColorFilter 39 | * @constructor 40 | * @extends Filter 41 | * @param {Number} redMultiplier 42 | * @param {Number} greenMultiplier 43 | * @param {Number} blueMultiplier 44 | * @param {Number} alphaMultiplier 45 | * @param {Number} redOffset 46 | * @param {Number} greenOffset 47 | * @param {Number} blueOffset 48 | * @param {Number} alphaOffset 49 | **/ 50 | var ColorFilter = function(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) { 51 | this.initialize(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset); 52 | } 53 | var p = ColorFilter.prototype = new createjs.Filter(); 54 | 55 | // パブリックプロパティ: 56 | /** 57 | * 赤チャンネルに乗算する値です。 58 | * @property redMultiplier 59 | * @type Number 60 | **/ 61 | p.redMultiplier = 1; 62 | 63 | /** 64 | * 緑チャンネルに乗算する値です。 65 | * @property greenMultiplier 66 | * @type Number 67 | **/ 68 | p.greenMultiplier = 1; 69 | 70 | /** 71 | * 青チャンネルに乗算する値です。 72 | * @property blueMultiplier 73 | * @type Number 74 | **/ 75 | p.blueMultiplier = 1; 76 | 77 | /** 78 | * アルファチャンネルに乗算する値です。 79 | * @property redMultiplier 80 | * @type Number 81 | **/ 82 | p.alphaMultiplier = 1; 83 | 84 | /** 85 | * 赤チャンネルに加算する値です。(計算後の値に加算されます) 86 | * @property redOffset 87 | * @type Number 88 | **/ 89 | p.redOffset = 0; 90 | 91 | /** 92 | * 緑チャンネルに加算する値です。(計算後の値に加算されます) 93 | * @property greenOffset 94 | * @type Number 95 | **/ 96 | p.greenOffset = 0; 97 | 98 | /** 99 | * 青チャンネルに加算する値です。(計算後の値に加算されます) 100 | * @property blueOffset 101 | * @type Number 102 | **/ 103 | p.blueOffset = 0; 104 | 105 | /** 106 | * アルファチャンネルに加算する値です。(計算後の値に加算されます) 107 | * @property alphaOffset 108 | * @type Number 109 | **/ 110 | p.alphaOffset = 0; 111 | 112 | // コンストラクタ: 113 | /** 114 | * 初期化用のメソッドです。 115 | * @method initialize 116 | * @protected 117 | **/ 118 | p.initialize = function(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) { 119 | this.redMultiplier = redMultiplier != null ? redMultiplier : 1; 120 | this.greenMultiplier = greenMultiplier != null ? greenMultiplier : 1; 121 | this.blueMultiplier = blueMultiplier != null ? blueMultiplier : 1; 122 | this.alphaMultiplier = alphaMultiplier != null ? alphaMultiplier : 1; 123 | this.redOffset = redOffset || 0; 124 | this.greenOffset = greenOffset || 0; 125 | this.blueOffset = blueOffset || 0; 126 | this.alphaOffset = alphaOffset || 0; 127 | } 128 | 129 | // パブリックメソッド: 130 | /** 131 | * 指定されたコンテキストにフィルターを適用します。 132 | * @method applyFilter 133 | * @param {CanvasRenderingContext2D} ctx ソースとして使用する 2D コンテキストです。 134 | * @param {Number} x ソースとして使用する矩形の x 座標です。 135 | * @param {Number} y ソースとして使用する矩形の y 座標です。 136 | * @param {Number} width ソース矩形の幅です。 137 | * @param {Number} height ソース矩形の高さです。 138 | * @param {CanvasRenderingContext2D} targetCtx オプションです。結果を描く 2D コンテキストです。デフォルトは ctx に渡されたコンテキストです。 139 | * @param {Number} targetX Optional. 結果を描く X 座標です。デフォルトは x に渡された値です。 140 | * @param {Number} targetY Optional. 結果を描く Y 座標です。デフォルトは y に渡された値です。 141 | * @return {Boolean} 142 | **/ 143 | p.applyFilter = function(ctx, x, y, width, height, targetCtx, targetX, targetY) { 144 | targetCtx = targetCtx || ctx; 145 | if (targetX == null) { targetX = x; } 146 | if (targetY == null) { targetY = y; } 147 | try { 148 | var imageData = ctx.getImageData(x, y, width, height); 149 | } catch(e) { 150 | //if (!this.suppressCrossDomainErrors) throw new Error("unable to access local image data: " + e); 151 | return false; 152 | } 153 | var data = imageData.data; 154 | var l = data.length; 155 | for (var i=0; i例 42 | * EventDispatcher の機能を "MyClass" クラスに追加します。 43 | * 44 | * EventDispatcher.initialize(MyClass.prototype); 45 | * 46 | * イベントを 1 つ追加します。 ({{#crossLink "EventDispatcher/addEventListener"}}{{/crossLink}} を参照) 47 | * 48 | * instance.addEventListener("eventName", handlerMethod); 49 | * function handlerMethod(event) { 50 | * console.log(event.target + " がクリックされました"); 51 | * } 52 | * 53 | * 適切なスコープの管理
54 | * EventDispatcher をクラス内で使用する場合、Function.bind やその他の方法を使用してメソッドのスコープを 55 | * 保持したい場合があるかもしれません。Function.bind はいくつかの古いブラウザーではサポートされない点に注意して下さい。 56 | * 57 | * instance.addEventListener("click", handleClick.bind(this)); 58 | * function handleClick(event) { 59 | * console.log("メソッドが呼ばれたスコープは: " + this); 60 | * } 61 | * 62 | * 現在、EventDispatcher はイベントの優先順位やバブリングをサポートしないことに注意して下さい。将来のバージョンでは 63 | * これらの機能のどちらか、あるいは両方のサポートが追加されるかもしれません。 64 | * 65 | * @class EventDispatcher 66 | * @constructor 67 | **/ 68 | var EventDispatcher = function() { 69 | this.initialize(); 70 | }; 71 | var p = EventDispatcher.prototype; 72 | 73 | 74 | /** 75 | * EventDispatcher のメソッドをミックスインする静的な初期化機能 76 | * @method initialize 77 | * @static 78 | * @param {Object} target EventDispatcher のメソッドを追加する対象のオブジェクトです。インスタンスと prototype の 79 | * どちらも指定可能です。 80 | **/ 81 | EventDispatcher.initialize = function(target) { 82 | target.addEventListener = p.addEventListener; 83 | target.removeEventListener = p.removeEventListener; 84 | target.removeAllEventListeners = p.removeAllEventListeners; 85 | target.hasEventListener = p.hasEventListener; 86 | target.dispatchEvent = p.dispatchEvent; 87 | }; 88 | 89 | // プライベートプロパティ: 90 | /** 91 | * @protected 92 | * @property _listeners 93 | * @type Object 94 | **/ 95 | p._listeners = null; 96 | 97 | // コンストラクタ: 98 | /** 99 | * 初期化メソッド 100 | * @method initialize 101 | * @protected 102 | **/ 103 | p.initialize = function() {}; 104 | 105 | // パブリックメソッド: 106 | /** 107 | * 指定されたイベントリスナを追加します。 108 | * @method addEventListener 109 | * @param {String} type イベントの種類を文字列で指定します 110 | * @param {Function | Object} listener handleEvent メソッドを持つオブジェクト、またはイベントが発行された時に 111 | * 呼ばれる関数です 112 | * @return {Function | Object} listener を連携や代入等の目的に使用できるように返します 113 | **/ 114 | p.addEventListener = function(type, listener) { 115 | var listeners = this._listeners; 116 | if (!listeners) { listeners = this._listeners = {}; } 117 | else { this.removeEventListener(type, listener); } 118 | var arr = listeners[type]; 119 | if (!arr) { arr = listeners[type] = []; } 120 | arr.push(listener); 121 | return listener; 122 | }; 123 | 124 | /** 125 | * 指定されたイベントリスナを削除します。 126 | * @method removeEventListener 127 | * @param {String} type イベントの種類を文字列で指定します。 128 | * @param {Function | Object} listener リスナ関数又はオブジェクトです。 129 | **/ 130 | p.removeEventListener = function(type, listener) { 131 | var listeners = this._listeners; 132 | if (!listeners) { return; } 133 | var arr = listeners[type]; 134 | if (!arr) { return; } 135 | for (var i=0,l=arr.length; i例 42 | * EventDispatcher の機能を "MyClass" クラスに追加します。 43 | * 44 | * EventDispatcher.initialize(MyClass.prototype); 45 | * 46 | * イベントを 1 つ追加します。 ({{#crossLink "EventDispatcher/addEventListener"}}{{/crossLink}} を参照) 47 | * 48 | * instance.addEventListener("eventName", handlerMethod); 49 | * function handlerMethod(event) { 50 | * console.log(event.target + " がクリックされました"); 51 | * } 52 | * 53 | * 適切なスコープの管理
54 | * EventDispatcher をクラス内で使用する場合、Function.bind やその他の方法を使用してメソッドのスコープを 55 | * 保持したい場合があるかもしれません。Function.bind はいくつかの古いブラウザーではサポートされない点に注意して下さい。 56 | * 57 | * instance.addEventListener("click", handleClick.bind(this)); 58 | * function handleClick(event) { 59 | * console.log("メソッドが呼ばれたスコープは: " + this); 60 | * } 61 | * 62 | * 現在、EventDispatcher はイベントの優先順位やバブリングをサポートしないことに注意して下さい。将来のバージョンでは 63 | * これらの機能のどちらか、あるいは両方のサポートが追加されるかもしれません。 64 | * 65 | * @class EventDispatcher 66 | * @constructor 67 | **/ 68 | var EventDispatcher = function() { 69 | this.initialize(); 70 | }; 71 | var p = EventDispatcher.prototype; 72 | 73 | 74 | /** 75 | * EventDispatcher のメソッドをミックスインする静的な初期化機能 76 | * @method initialize 77 | * @static 78 | * @param {Object} target EventDispatcher のメソッドを追加する対象のオブジェクトです。インスタンスと prototype の 79 | * どちらも指定可能です。 80 | **/ 81 | EventDispatcher.initialize = function(target) { 82 | target.addEventListener = p.addEventListener; 83 | target.removeEventListener = p.removeEventListener; 84 | target.removeAllEventListeners = p.removeAllEventListeners; 85 | target.hasEventListener = p.hasEventListener; 86 | target.dispatchEvent = p.dispatchEvent; 87 | }; 88 | 89 | // プライベートプロパティ: 90 | /** 91 | * @protected 92 | * @property _listeners 93 | * @type Object 94 | **/ 95 | p._listeners = null; 96 | 97 | // コンストラクタ: 98 | /** 99 | * 初期化メソッド 100 | * @method initialize 101 | * @protected 102 | **/ 103 | p.initialize = function() {}; 104 | 105 | // パブリックメソッド: 106 | /** 107 | * 指定されたイベントリスナを追加します。 108 | * @method addEventListener 109 | * @param {String} type イベントの種類を文字列で指定します 110 | * @param {Function | Object} listener handleEvent メソッドを持つオブジェクト、またはイベントが発行された時に 111 | * 呼ばれる関数です 112 | * @return {Function | Object} listener を連携や代入等の目的に使用できるように返します 113 | **/ 114 | p.addEventListener = function(type, listener) { 115 | var listeners = this._listeners; 116 | if (!listeners) { listeners = this._listeners = {}; } 117 | else { this.removeEventListener(type, listener); } 118 | var arr = listeners[type]; 119 | if (!arr) { arr = listeners[type] = []; } 120 | arr.push(listener); 121 | return listener; 122 | }; 123 | 124 | /** 125 | * 指定されたイベントリスナを削除します。 126 | * @method removeEventListener 127 | * @param {String} type イベントの種類を文字列で指定します。 128 | * @param {Function | Object} listener リスナ関数又はオブジェクトです。 129 | **/ 130 | p.removeEventListener = function(type, listener) { 131 | var listeners = this._listeners; 132 | if (!listeners) { return; } 133 | var arr = listeners[type]; 134 | if (!arr) { return; } 135 | for (var i=0,l=arr.length; i例 42 | * EventDispatcher の機能を "MyClass" クラスに追加します。 43 | * 44 | * EventDispatcher.initialize(MyClass.prototype); 45 | * 46 | * イベントを 1 つ追加します。 ({{#crossLink "EventDispatcher/addEventListener"}}{{/crossLink}} を参照) 47 | * 48 | * instance.addEventListener("eventName", handlerMethod); 49 | * function handlerMethod(event) { 50 | * console.log(event.target + " がクリックされました"); 51 | * } 52 | * 53 | * 適切なスコープの管理
54 | * EventDispatcher をクラス内で使用する場合、Function.bind やその他の方法を使用してメソッドのスコープを 55 | * 保持したい場合があるかもしれません。Function.bind はいくつかの古いブラウザーではサポートされない点に注意して下さい。 56 | * 57 | * instance.addEventListener("click", handleClick.bind(this)); 58 | * function handleClick(event) { 59 | * console.log("メソッドが呼ばれたスコープは: " + this); 60 | * } 61 | * 62 | * 現在、EventDispatcher はイベントの優先順位やバブリングをサポートしないことに注意して下さい。将来のバージョンでは 63 | * これらの機能のどちらか、あるいは両方のサポートが追加されるかもしれません。 64 | * 65 | * @class EventDispatcher 66 | * @constructor 67 | **/ 68 | var EventDispatcher = function() { 69 | this.initialize(); 70 | }; 71 | var p = EventDispatcher.prototype; 72 | 73 | 74 | /** 75 | * EventDispatcher のメソッドをミックスインする静的な初期化機能 76 | * @method initialize 77 | * @static 78 | * @param {Object} target EventDispatcher のメソッドを追加する対象のオブジェクトです。インスタンスと prototype の 79 | * どちらも指定可能です。 80 | **/ 81 | EventDispatcher.initialize = function(target) { 82 | target.addEventListener = p.addEventListener; 83 | target.removeEventListener = p.removeEventListener; 84 | target.removeAllEventListeners = p.removeAllEventListeners; 85 | target.hasEventListener = p.hasEventListener; 86 | target.dispatchEvent = p.dispatchEvent; 87 | }; 88 | 89 | // プライベートプロパティ: 90 | /** 91 | * @protected 92 | * @property _listeners 93 | * @type Object 94 | **/ 95 | p._listeners = null; 96 | 97 | // コンストラクタ: 98 | /** 99 | * 初期化メソッド 100 | * @method initialize 101 | * @protected 102 | **/ 103 | p.initialize = function() {}; 104 | 105 | // パブリックメソッド: 106 | /** 107 | * 指定されたイベントリスナを追加します。 108 | * @method addEventListener 109 | * @param {String} type イベントの種類を文字列で指定します 110 | * @param {Function | Object} listener handleEvent メソッドを持つオブジェクト、またはイベントが発行された時に 111 | * 呼ばれる関数です 112 | * @return {Function | Object} listener を連携や代入等の目的に使用できるように返します 113 | **/ 114 | p.addEventListener = function(type, listener) { 115 | var listeners = this._listeners; 116 | if (!listeners) { listeners = this._listeners = {}; } 117 | else { this.removeEventListener(type, listener); } 118 | var arr = listeners[type]; 119 | if (!arr) { arr = listeners[type] = []; } 120 | arr.push(listener); 121 | return listener; 122 | }; 123 | 124 | /** 125 | * 指定されたイベントリスナを削除します。 126 | * @method removeEventListener 127 | * @param {String} type イベントの種類を文字列で指定します。 128 | * @param {Function | Object} listener リスナ関数又はオブジェクトです。 129 | **/ 130 | p.removeEventListener = function(type, listener) { 131 | var listeners = this._listeners; 132 | if (!listeners) { return; } 133 | var arr = listeners[type]; 134 | if (!arr) { return; } 135 | for (var i=0,l=arr.length; i例 42 | * EventDispatcher の機能を "MyClass" クラスに追加します。 43 | * 44 | * EventDispatcher.initialize(MyClass.prototype); 45 | * 46 | * イベントを 1 つ追加します。 ({{#crossLink "EventDispatcher/addEventListener"}}{{/crossLink}} を参照) 47 | * 48 | * instance.addEventListener("eventName", handlerMethod); 49 | * function handlerMethod(event) { 50 | * console.log(event.target + " がクリックされました"); 51 | * } 52 | * 53 | * 適切なスコープの管理
54 | * EventDispatcher をクラス内で使用する場合、Function.bind やその他の方法を使用してメソッドのスコープを 55 | * 保持したい場合があるかもしれません。Function.bind はいくつかの古いブラウザーではサポートされない点に注意して下さい。 56 | * 57 | * instance.addEventListener("click", handleClick.bind(this)); 58 | * function handleClick(event) { 59 | * console.log("メソッドが呼ばれたスコープは: " + this); 60 | * } 61 | * 62 | * 現在、EventDispatcher はイベントの優先順位やバブリングをサポートしないことに注意して下さい。将来のバージョンでは 63 | * これらの機能のどちらか、あるいは両方のサポートが追加されるかもしれません。 64 | * 65 | * @class EventDispatcher 66 | * @constructor 67 | **/ 68 | var EventDispatcher = function() { 69 | this.initialize(); 70 | }; 71 | var p = EventDispatcher.prototype; 72 | 73 | 74 | /** 75 | * EventDispatcher のメソッドをミックスインする静的な初期化機能 76 | * @method initialize 77 | * @static 78 | * @param {Object} target EventDispatcher のメソッドを追加する対象のオブジェクトです。インスタンスと prototype の 79 | * どちらも指定可能です。 80 | **/ 81 | EventDispatcher.initialize = function(target) { 82 | target.addEventListener = p.addEventListener; 83 | target.removeEventListener = p.removeEventListener; 84 | target.removeAllEventListeners = p.removeAllEventListeners; 85 | target.hasEventListener = p.hasEventListener; 86 | target.dispatchEvent = p.dispatchEvent; 87 | }; 88 | 89 | // プライベートプロパティ: 90 | /** 91 | * @protected 92 | * @property _listeners 93 | * @type Object 94 | **/ 95 | p._listeners = null; 96 | 97 | // コンストラクタ: 98 | /** 99 | * 初期化メソッド 100 | * @method initialize 101 | * @protected 102 | **/ 103 | p.initialize = function() {}; 104 | 105 | // パブリックメソッド: 106 | /** 107 | * 指定されたイベントリスナを追加します。 108 | * @method addEventListener 109 | * @param {String} type イベントの種類を文字列で指定します 110 | * @param {Function | Object} listener handleEvent メソッドを持つオブジェクト、またはイベントが発行された時に 111 | * 呼ばれる関数です 112 | * @return {Function | Object} listener を連携や代入等の目的に使用できるように返します 113 | **/ 114 | p.addEventListener = function(type, listener) { 115 | var listeners = this._listeners; 116 | if (!listeners) { listeners = this._listeners = {}; } 117 | else { this.removeEventListener(type, listener); } 118 | var arr = listeners[type]; 119 | if (!arr) { arr = listeners[type] = []; } 120 | arr.push(listener); 121 | return listener; 122 | }; 123 | 124 | /** 125 | * 指定されたイベントリスナを削除します。 126 | * @method removeEventListener 127 | * @param {String} type イベントの種類を文字列で指定します。 128 | * @param {Function | Object} listener リスナ関数又はオブジェクトです。 129 | **/ 130 | p.removeEventListener = function(type, listener) { 131 | var listeners = this._listeners; 132 | if (!listeners) { return; } 133 | var arr = listeners[type]; 134 | if (!arr) { return; } 135 | for (var i=0,l=arr.length; i 2 | 3 | 4 | 5 | EaselJSチュートリアル: アニメーションとTicker 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

EaselJS: アニメーションとTicker

21 |

22 | あらすじ: 簡単なプログラムによるアニメーションを作成し、Tickerクラスについて学びます。
23 | 扱う内容: アニメーション, Ticker, setFPS, useRAF, getTime, setPaused, requestAnimationFrame, Stage.update, 時間ベースのアニメーション
24 | 対象: EaselJS v0.6.0 25 |

26 |
27 | 28 |
29 |
30 |

アニメーションの基本

31 |
32 |

33 | アニメーションは、オブジェクトの視覚的なプロパティを時間をかけて変更します。これを簡単に作ることができるトゥイーンライブラリは数多くあります(TweenJSやTweenLiteなど)が、このチュートリアルではこれらを使わずに基本的なコンセプトを探ります。 34 |

35 |

36 | 一定間隔で以下のコードを実行すると、円が右に移動します。 37 |

38 | 42 |

43 | シンプルです。しかし、一定間隔を設定するための最適な方法は何でしょうか? setInterval、setTimeout、またはrequestAnimationFrameを使って独自に実装することができ、表示リストを更新した後にstage.update()を実行すれば、EaselJSは完璧に動作します。 44 |

45 |

46 | 物事を簡単にするために、EaselJSにはTickerクラスが付属しています。これは、あなたのアプリケーションのために定期的にハートビート(tick)、一時停止、時間の変化量を提供しており、setTimeoutとrequestAnimationFrameの両方をラップしているので、これらを互換的に使用することができます。 47 |

48 |
49 | 50 |
51 |
52 |

Ticker

53 |
54 |

55 | Tickerクラスは、様々なオブジェクトにtickを伝播するシンプルな静的インターフェース(new Ticker()できないことを意味します)を提供します。それを使うには、addEventListener("tick", handler)を使ってイベントリスナーを追加するだけです。リスナーは関数、またはtick関数を定義したオブジェクトを指定できます。 56 |

57 |

58 | 以下のコードはリスナーとしてwindowオブジェクトが追加され、1秒あたり20回(Tickerのデフォルトのフレームレート)呼び出されるtick関数を定義します。 59 | 63 |

64 | 間隔(tick間の時間)、あるいはフレームレート(1秒あたりのtickの数【訳注:原文ではthe number of ticks per frame=1フレームあたりのtickの数】)のいずれかを設定することによって、簡単にデフォルトのフレームレートを変更できます。 65 |

66 | 71 |

72 | 毎秒30フレームでステージ上を移動する円を作るために、すべてを組み合わせてみましょう。canvasの描画を変更するためにtick関数の最後でstage.update()を呼び出すことを忘れないでください! simple.htmlのソースで完成したコードをチェックしてください。 73 |

74 | 75 |
76 | 77 |
78 |
79 |

時間ベースのアニメーション

80 |
81 |

82 | 多くのアプリケーションでは、フレームレートから切り離してアニメーションを作ることをお勧めします。これにより、動的にフレームレートを変更することができます。また、設定したフレームレートを維持できない低速なデバイスで実行されている場合でも、あなたのアニメーションが同じ時間で実行されることが保証されます。 83 |

84 |

85 | Tickerは、リスナーが前のtickから経過した時間の長さを示すパラメータを渡すため、時間ベースのアニメーションを簡単に作ることができます。また、Tickerが初期化されてから経過した合計時間がgetTimeメソッドによって提供されます。 86 |

87 | プロパティの変更を行う時に経過時間を用いることによって、時間ベースのアニメーションを作ることができます。 88 | 96 |

97 | ここでフレームレートを変更することができ、円がcanvasを横断する時間と同じ時間がかかります(数ミリ秒ずれます)。 98 |

99 | 100 |

101 | FPSを変更するときの上記デモに注目すると、青い円の速度がフレームレートに相対的であるのに対して、赤い円は同じ速度で移動しています。20 fpsの時、赤い円は青い円よりも非常にわずかながら速く移動します。なぜならば、予想の50ミリ秒よりもわずかに長いフレームがかかっているためです。 102 |

103 |
104 | 105 |
106 |
107 |

一時停止

108 |
109 |

110 | Tickerはまた、アニメーションのすべてを一時停止する能力を提供します。あなたがTickerに追加するすべてのリスナーは、"一時停止可能"です。Ticker.setPaused(true);を呼び出すと、すべての一時停止可能なリスナー上のtickの呼び出しから、Tickerを停止します。 111 |

112 |

113 | getTimeメソッドは、一時停止かどうかのパラメータを受け取り、それに基づいて適切な合計時間を返します。 114 |

115 |

116 | 以下のデモでは、一時停止をトグルでき、赤い"一時停止可能な"円が停止し、緑の"一時停止不可能な"円がそうでないところを確認できます。Tickerが一時停止しているとき、一時停止可能な合計時間の更新が止まっていることを確認できます。 117 |

118 | 119 |
120 | 121 |
122 |
123 |

Tick

124 |
125 |

126 | stage.update()を呼び出すと、tickメソッドを持つ任意の子孫をチェックし、canvasにその全体の表示リストをレンダリングします。任意のパラメータがupdate()に渡されると、tick()ハンドラに渡されます。これであなたの表示オブジェクトのコンテキストでアニメーションを処理することができます。 127 |

128 | 131 |

132 | StageupdateのショートカットとしてのhandleEventを持っているので、Tickerにリスナーとして直接ステージを追加することができます。これを使用したいと思うことは希ですが、簡単なテストのためには便利です。例えば、onTick.htmlのソースを参照してください。 133 |

134 |
135 | 136 |
137 |
138 |

requestAnimationFrame

139 |
140 |

141 | ほとんどのモダンブラウザでは、requestAnimationFrameと呼ばれる新しいアニメーション関連のAPIをサポートしています。それは、画面描画とプログラム的な変更を同期するための利点を持ち、CPUとバッテリーの使用量を減らすためにバックグラウンドのコンテンツのフレームレートを抑えます(タブのフォーカスが外れるなど)。 142 |

143 |

144 | Ticker.useRAF = trueに設定すると、使用中のブラウザでサポートされている場合はTickerがrequestAnimationFrameを使用し、サポートされていない場合はsetTimeoutにフォールバックします。これを行う場合は、一貫した結果を得るために60の約数(例:15, 20, 30, 60)にフレームレートを設定することをお勧めします。 145 |

146 |
147 | 148 |
149 |
150 |

パフォーマンス

151 |
152 |

153 | 高いフレームレートは、常に滑らかなアニメーションをもたらさないことを覚えておいてください。低いフレームレートはCPU使用量を抑え、より一貫したパフォーマンスを提供することができます。あなたのプロジェクトのための適切なバランスを見つけるようにしてください。 154 |

155 |

156 | あなたの本当のフレームレートが何であるかを確認したい場合は、過去1秒間の実際のフレームレートを取得するTicker.getMeasuredFPS()を呼び出すことができます。 157 |

158 |
159 | 160 |
161 |
162 |

TweenJS

163 |
164 |

165 | アニメーションを多く行うことを計画している場合は、TweenJSまたは別のトゥイーンライブラリをチェックするといいでしょう。時間をかけてプロパティをトゥイーンする簡単なコマンドを使ったり、アニメーションのシーケンスを作ったりすることができます。 166 |

167 | 170 |
171 | 172 |
173 | 174 | 175 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/filters/BoxBlurFilter.js: -------------------------------------------------------------------------------- 1 | /* 2 | * BoxBlurFilter 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | 34 | /** 35 | * BoxBlurFilter は表示オブジェクトにボックスブラーを適用します。 36 | * 37 | * フィルターの使い方の例は {{#crossLink "Filter"}}{{/crossLink}} を参照して下さい。 38 | * @class BoxBlurFilter 39 | * @extends Filter 40 | * @constructor 41 | * @param {Number} blurX 42 | * @param {Number} blurY 43 | * @param {Number} quality 44 | **/ 45 | var BoxBlurFilter = function( blurX, blurY, quality ) { 46 | this.initialize( blurX, blurY, quality ); 47 | } 48 | var p = BoxBlurFilter.prototype = new createjs.Filter(); 49 | 50 | // コンストラクタ: 51 | /** @ignore */ 52 | p.initialize = function( blurX, blurY, quality ) { 53 | if ( isNaN(blurX) || blurX < 0 ) blurX = 0; 54 | this.blurX = blurX | 0; 55 | if ( isNaN(blurY) || blurY < 0 ) blurY = 0; 56 | this.blurY = blurY | 0; 57 | if ( isNaN(quality) || quality < 1 ) quality = 1; 58 | this.quality = quality | 0; 59 | } 60 | 61 | // パブリックプロパティ: 62 | 63 | /** 64 | * 水平方向のぼかしの半径 65 | * @property blurX 66 | * @type Number 67 | **/ 68 | p.blurX = 0; 69 | 70 | /** 71 | * 垂直方向のぼかしの半径 72 | * @property blurY 73 | * @type Number 74 | **/ 75 | p.blurY = 0; 76 | 77 | /** 78 | * ぼかし処理を繰り返す回数。例えば、1 を指定すると荒いぼかしになる。 79 | * 2 を指定するとより滑らかなぼかしになるが、処理時間は倍になる。 80 | * @property quality 81 | * @type Number 82 | **/ 83 | p.quality = 1; 84 | 85 | // パブリックメソッド: 86 | /** 87 | * フィルターの描画に必要なマージンを示す rectangle オブジェクトを返します。 88 | * 例えば、描画領域を左に 4 ピクセル、右に 7 ピクセル広げるフィルターの場合 89 | * (ただし上下方向には広がらない)返される rectangle の値は (x=-4, y=0, width=11, height=0) になります。 90 | * @method getBounds 91 | * @return {Rectangle} フィルターの描画に必要なマージンを示す rectangle オブジェクトです。 92 | **/ 93 | p.getBounds = function() { 94 | // TODO: this doesn't properly account for blur quality. 95 | return new createjs.Rectangle(-this.blurX,-this.blurY,2*this.blurX,2*this.blurY); 96 | } 97 | 98 | /** 99 | * 指定されたコンテキストにフィルターを適用します。 100 | * @method applyFilter 101 | * @param {CanvasRenderingContext2D} ctx ソースとして使用する 2D コンテキストです。 102 | * @param {Number} x ソースとして使用する矩形の x 座標です。 103 | * @param {Number} y ソースとして使用する矩形の y 座標です。 104 | * @param {Number} width ソース矩形の幅です。 105 | * @param {Number} height ソース矩形の高さです。 106 | * @param {CanvasRenderingContext2D} targetCtx オプションです。結果を描く 2D コンテキストです。デフォルトは ctx に渡されたコンテキストです。 107 | * @param {Number} targetX Optional. 結果を描く X 座標です。デフォルトは x に渡された値です。 108 | * @param {Number} targetY Optional. 結果を描く Y 座標です。デフォルトは y に渡された値です。 109 | * @return {Boolean} 110 | **/ 111 | p.applyFilter = function(ctx, x, y, width, height, targetCtx, targetX, targetY) { 112 | targetCtx = targetCtx || ctx; 113 | if (targetX == null) { targetX = x; } 114 | if (targetY == null) { targetY = y; } 115 | try { 116 | var imageData = ctx.getImageData(x, y, width, height); 117 | } catch(e) { 118 | //if (!this.suppressCrossDomainErrors) throw new Error("unable to access local image data: " + e); 119 | return false; 120 | } 121 | 122 | var radiusX = this.blurX; 123 | if ( isNaN(radiusX) || radiusX < 0 ) return false; 124 | radiusX |= 0; 125 | 126 | var radiusY = this.blurY; 127 | if ( isNaN(radiusY) || radiusY < 0 ) return false; 128 | radiusY |= 0; 129 | 130 | if ( radiusX == 0 && radiusY == 0 ) return false; 131 | 132 | var iterations = this.quality; 133 | if ( isNaN(iterations) || iterations < 1 ) iterations = 1; 134 | iterations |= 0; 135 | if ( iterations > 3 ) iterations = 3; 136 | if ( iterations < 1 ) iterations = 1; 137 | 138 | var pixels = imageData.data; 139 | 140 | var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw; 141 | var wm = width - 1; 142 | var hm = height - 1; 143 | var rad1x = radiusX + 1; 144 | var divx = radiusX + rad1x; 145 | var rad1y = radiusY + 1; 146 | var divy = radiusY + rad1y; 147 | var div2 = 1 / (divx * divy); 148 | 149 | var r = []; 150 | var g = []; 151 | var b = []; 152 | var a = []; 153 | 154 | var vmin = []; 155 | var vmax = []; 156 | 157 | while ( iterations-- > 0 ) { 158 | yw = yi = 0; 159 | 160 | for ( y=0; y < height; y++ ){ 161 | rsum = pixels[yw] * rad1x; 162 | gsum = pixels[yw+1] * rad1x; 163 | bsum = pixels[yw+2] * rad1x; 164 | asum = pixels[yw+3] * rad1x; 165 | 166 | 167 | for( i = 1; i <= radiusX; i++ ) { 168 | p = yw + (((i > wm ? wm : i )) << 2 ); 169 | rsum += pixels[p++]; 170 | gsum += pixels[p++]; 171 | bsum += pixels[p++]; 172 | asum += pixels[p] 173 | } 174 | 175 | for ( x = 0; x < width; x++ ) { 176 | r[yi] = rsum; 177 | g[yi] = gsum; 178 | b[yi] = bsum; 179 | a[yi] = asum; 180 | 181 | if(y==0){ 182 | vmin[x] = Math.min( x + rad1x, wm ) << 2; 183 | vmax[x] = Math.max( x - radiusX, 0 ) << 2; 184 | } 185 | 186 | p1 = yw + vmin[x]; 187 | p2 = yw + vmax[x]; 188 | 189 | rsum += pixels[p1++] - pixels[p2++]; 190 | gsum += pixels[p1++] - pixels[p2++]; 191 | bsum += pixels[p1++] - pixels[p2++]; 192 | asum += pixels[p1] - pixels[p2]; 193 | 194 | yi++; 195 | } 196 | yw += ( width << 2 ); 197 | } 198 | 199 | for ( x = 0; x < width; x++ ) { 200 | yp = x; 201 | rsum = r[yp] * rad1y; 202 | gsum = g[yp] * rad1y; 203 | bsum = b[yp] * rad1y; 204 | asum = a[yp] * rad1y; 205 | 206 | for( i = 1; i <= radiusY; i++ ) { 207 | yp += ( i > hm ? 0 : width ); 208 | rsum += r[yp]; 209 | gsum += g[yp]; 210 | bsum += b[yp]; 211 | asum += a[yp]; 212 | } 213 | 214 | yi = x << 2; 215 | for ( y = 0; y < height; y++) { 216 | pixels[yi] = (rsum * div2 + 0.5) | 0; 217 | pixels[yi+1] = (gsum * div2 + 0.5) | 0; 218 | pixels[yi+2] = (bsum * div2 + 0.5) | 0; 219 | pixels[yi+3] = (asum * div2 + 0.5) | 0; 220 | 221 | if( x == 0 ){ 222 | vmin[y] = Math.min( y + rad1y, hm ) * width; 223 | vmax[y] = Math.max( y - radiusY,0 ) * width; 224 | } 225 | 226 | p1 = x + vmin[y]; 227 | p2 = x + vmax[y]; 228 | 229 | rsum += r[p1] - r[p2]; 230 | gsum += g[p1] - g[p2]; 231 | bsum += b[p1] - b[p2]; 232 | asum += a[p1] - a[p2]; 233 | 234 | yi += width << 2; 235 | } 236 | } 237 | } 238 | 239 | targetCtx.putImageData(imageData, targetX, targetY); 240 | return true; 241 | } 242 | 243 | /** 244 | * このオブジェクトの複製を返します。 245 | * @return {BoxBlurFilter} 246 | **/ 247 | p.clone = function() { 248 | return new BoxBlurFilter(this.blurX, this.blurY, this.quality); 249 | } 250 | 251 | /** 252 | * このオブジェクトの文字列での表現を返します。 253 | * @return {String} 254 | **/ 255 | p.toString = function() { 256 | return "[BoxBlurFilter]"; 257 | } 258 | 259 | // プライベートメソッド: 260 | 261 | 262 | 263 | createjs.BoxBlurFilter = BoxBlurFilter; 264 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/tutorials/Mouse Interaction/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EaselJSチュートリアル: マウスインタラクション 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

EaselJS: マウスインタラクション

21 |

22 | あらすじ: 表示オブジェクトとステージ上のマウスイベントについて学びます。
23 | 扱う内容: MouseEvent, click, dblclick, mouseover, mouseout, mousemove, mousedown, mouseup, enableMouseOver, ドラッグアンドドロップ, mouseMoveOutside
24 | 対象: EaselJS v0.6.0 25 |

26 |
27 | 28 |
29 |
30 |

基本

31 |
32 |

33 | 中核として、EaselJSのマウスインタラクションのモデルを使うことは非常に簡単です - ただ表示オブジェクトにマウスイベントのいずれかのハンドラ関数を割り当てるだけです。 34 | 37 |

38 | 39 |

40 | 表示オブジェクトのために監視できるイベントの数はこちらです。click, mousedown, mouseup, dblclick, mouseover, そしてmouseoutです。 41 |

42 |

43 | 後者の2つのイベントは、それらに関連したいくつかのオーバーヘッドがあるため、stage.enableMouseOver(frequency)で有効にする必要があります。frequencyパラメータは、EaselJSがマウスポインタの下に何があるか1秒間に何回計算するかを示します。数値が高いほど敏感になりますが、より計算コストが高くなります。1秒間に20回がデフォルトです。 44 |

45 |
46 | 47 |
48 |
49 |

MouseEvent

50 |
51 |

52 | マウスハンドラがトリガーされたとき、それはMouseEventインスタンスを持つ1つのパラメータとともに実行されます。イベントのtypeが何であったか、targetが何であったか、それのベースとなったnativeEventオブジェクトへのアクセス、そしてマウスポインタのstageXstageY座標のチェック、を表示するためにこのオブジェクトを使います。 53 | 58 |

59 | 60 |
61 | 62 |
63 |
64 |

コンテナ

65 |
66 |

67 | Containerインスタンスにマウスイベントハンドラを割り当てたとき、その子が自分のリスナーを持っていたとしても、すべてのマウスイベントをブロックします。 68 |

69 |

70 | 以下の例は"ボタン"で、背景のシェイプ、テキストラベルの2つの子を含むContainerインスタンスです。これらの表示オブジェクトの3つすべてはclickハンドラを持っていますが、ボタンをクリックすると、ボタンのハンドラのみが呼び出されます。 71 |

72 | 73 |

74 | もしcontainer.htmlのコードを編集してボタンのclickハンドラを削除したら、背景とラベルのハンドラが有効になるでしょう。 75 |

76 |

77 | mouseChildrenfalseに設定することによって、ハンドラの割り当てなしで子のマウスイベントをブロックすることができます。 78 | 81 |

82 |

83 | 同様に、mouseEnabledfalseに設定することによって、ハンドラを除去しなくても表示オブジェクトのマウスイベントを無効にすることができます。 84 | 88 |

89 | 90 |
91 |
92 |

hitArea

93 |
94 |

95 | 通常、EaselJSは表示オブジェクト上の見えている、非透明なピクセルに基づいて、マウスのヒットを計算します。これはほとんどうまく動作しますが、画面に表示されている内容と異なるヒット領域を定義したい場合があるかもしれません。 96 |

97 |

98 | これを行うには、あなたのオブジェクトのためのhitAreaになる他の表示オブジェクトを割り当てます。これは表示リスト上にある必要はありません、そして表示はされませんが、ヒットテストのために使われます。 99 |

100 |

101 | ヒット領域の表示オブジェクトは、その所有者の座標系(すなわち連結変換)内で使用され、同じ表示オブジェクトを複数のオブジェクトのhitAreaとして再利用することができます。 102 |

103 | 104 |

105 | このデモでは、赤色のテキストにロールオーバーしてマウスポインタが非透明ピクセルの上にあるときだけヒットを登録し、一方青色のテキストは長方形のhitAreaを使ってヒットを計算していることに注意してください。 106 |

107 |
108 | 109 |
110 |
111 |

ステージのマウスイベント

112 |
113 |

114 | もしステージに通常のマウスイベントハンドラを割り当てたら、そのすべての子のマウスイベントがブロックされるでしょう。また、他のすべての表示オブジェクトのように、非透明ピクセル上にマウスポインタがあるときだけイベ

115 |

116 | ステージは、canvas内の任意の場所で一般的なマウスインタラクションに応答するため、便利ないくつかの特別なマウスイベントを持っています。stagemousedown, stagemouseup, そしてstagemousemoveは、canvas内の任意の場所で関連するマウスインタラクションが起こると、いつでも呼び出されます。 117 | 122 |

123 | 次のデモでは、canvasに絵を描けるように、これらのイベントを使って示しています。 124 |

125 | 126 |

127 | デフォルトでは、マウスポインタがcanvasの外にあるときstagemousemoveイベントを取得することを止めるでしょう。stage.mouseInBoundsで何が起こったかをチェックすることができます。 128 |

129 |

130 | もしマウスポインタがcanvasを出たときにstagemousemoveイベントを取得し続けたい場合は、mouseMoveOutsidetrueに設定します。MouseEventstageXstageYプロパティは、常にステージの範囲内に正規化された値を返しますが、rawXrawYを使うと、正規化されていない値を取得します(注意していない場合、これはエラーを返すことがあります)。 131 | 138 |

139 |
140 | 141 |
142 |
143 |

ドラッグアンドドロップ

144 |
145 |

146 | EaselJSは、実装が非常に簡単なドラッグアンドドロップ機能を作れます。clickハンドラが呼ばれたとき、それに渡されるMouseEventは、独自の2つの特別なマウスハンドラ、mousemovemouseupを持っています。 147 |

148 |

149 | これらのハンドラは、Stageとまったく同じように機能しますが、1つの大きな違いは、ユーザーがマウスポインタをリリースするまでの間のみ有効なことです。少し奇妙に聞こえますが、使うことは本当に簡単です。 150 |

151 | 161 |

162 | 簡単な例について、以下のデモのソースをチェックしてください。それはまたmouseMoveOutsideプロパティを試すには絶好の場所です。 163 |

164 | 165 |
166 | 167 |
168 |
169 |

その他の便利なAPI

170 |
171 |

172 | 高度なマウスインタラクションに関連する他のメソッドは、以下の通りです。

    173 |
  • Container.getObjectUnderPoint() 指定されたポイントの下の一番上の表示オブジェクトを返します。 174 |
  • Container.getObjectsUnderPoint() 指定されたポイントの下のすべての表示オブジェクトを返します。 175 |
  • DisplayObject.hitTest() 指定されたポイントに非透明な表示オブジェクトがある場合はtrueを返します。 176 |
177 | 詳細については、APIドキュメントとHitTestチュートリアルをチェックしてください。 178 |

179 |
180 | 181 |
182 | 183 | 184 | -------------------------------------------------------------------------------- /ja/TweenJS/0.4.0/src/tweenjs/MotionGuidePlugin.js: -------------------------------------------------------------------------------- 1 | /* 2 | * MotionGuidePlugin 3 | * ドキュメント、更新、例については、 http://createjs.com/ を参照してください。 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | /** 34 | * モーションガイドと共に動作するTweenJSプラグイン。 35 | * 36 | * 使用するには、TweenJSがロードされた後でプラグインをインストールします。次に、以下に述べるように、オブジェクトと 37 | * 共に'guide'プロパティをトゥイーンします。 38 | * 39 | * createjs.MotionGuidePlugin.install(); 40 | * 41 | *

42 | * 43 | * // モーションガイドを使う 44 | * Tween.get(target).to({guide:{ path:[0,0, 0,200,200,200, 200,0,0,0] }},7000); 45 | * // ラインを可視化する 46 | * graphics.moveTo(0,0).curveTo(0,200,200,200).curveTo(200,0,0,0); 47 | * 48 | * それぞれのパスは、そこで高速のパフォーマンスを確保するために事前の計算を必要とします。事前の計算のために、パスの 49 | * 内部サポートは中間のトゥイーンを変更しません。Guideオブジェクトのプロパティは以下になります:
    50 | *
  • path: 必須, Array : moveToと1からn個のcurveTo呼び出しにより描画するためのx/yを示します。
  • 51 | *
  • start: オプション, 0-1 : 初期位置, 同じパスが続くのでなければ、ディフォルトは0。
  • 52 | *
  • end: オプション, 0-1 : 最終位置, 何も指定されなければ、ディフォルトは1。
  • 53 | *
  • orient: オプション, bool : その位置でのカーブに沿ったターゲットの回転をセットします。
  • 54 | *
55 | * Guideオブジェクトは、たとえすべてのプロパティが同じ場合でも、トゥイーン間で共有されるべきではありません。 56 | * ライブラリはバックグランドでこれらのオブジェクトに情報を保存し、それらを共有することで予期しないふるまいを引き起こします。 57 | * トゥイーンの0-1以外の範囲の値は、定義されたカーブの適切な部分から、最良の推測となるでしょう。 58 | * 59 | * @class MotionGuidePlugin 60 | * @constructor 61 | **/ 62 | var MotionGuidePlugin = function() { 63 | throw("MotionGuidePlugin cannot be instantiated.") 64 | }; 65 | 66 | // 静的インタフェース: 67 | /** 68 | * @property priority 69 | * @protected 70 | * @static 71 | **/ 72 | MotionGuidePlugin.priority = 0; // 高プライオリティ、すぐに実行するべき 73 | 74 | /** 75 | * TweenJSと共に使用するために、このプラグインをインストールします。このプラグインを有効にするために、TweenJSが 76 | * ロードされた後で一度これを呼び出してください。 77 | * @method install 78 | * @static 79 | **/ 80 | MotionGuidePlugin.install = function() { 81 | createjs.Tween.installPlugin(MotionGuidePlugin, ["guide", "x", "y", "rotation"]); 82 | return createjs.Tween.IGNORE; 83 | }; 84 | 85 | /** 86 | * @method init 87 | * @protected 88 | * @static 89 | **/ 90 | MotionGuidePlugin.init = function(tween, prop, value) { 91 | var target = tween.target; 92 | if(!target.hasOwnProperty("x")){ target.x = 0; } 93 | if(!target.hasOwnProperty("y")){ target.y = 0; } 94 | if(!target.hasOwnProperty("rotation")){ target.rotation = 0; } 95 | return prop=="guide"?null:value; 96 | }; 97 | 98 | /** 99 | * @method step 100 | * @protected 101 | * @static 102 | **/ 103 | MotionGuidePlugin.step = function(tween, prop, startValue, endValue, injectProps) { 104 | if(prop != "guide"){ return endValue; } 105 | var temp, data = endValue; 106 | if(!data.hasOwnProperty("path")){ data.path = []; } 107 | var path = data.path; 108 | if(!data.hasOwnProperty("end")){ data.end = 1; } 109 | if(!data.hasOwnProperty("start")){ 110 | data.start = (startValue&&startValue.hasOwnProperty("end")&&startValue.path===path)?startValue.end:0; 111 | } 112 | if(data.hasOwnProperty("_segments") && data._length){ return endValue; } 113 | var l = path.length; 114 | var accuracy = 10; // 以下の正確さを改善するために調整してください、しかしパフォーマンスは犠牲になります (# of seg) 115 | if(l >= 6 && (l-2) % 4 == 0){ // 十分な点の数 && startを無視することでエントリごとにふさわしい数を含む 116 | data._segments = []; 117 | data._length = 0; 118 | for(var i=2; i seg[n] && n < cap){ 188 | pos -= seg[n]; 189 | n+=2; 190 | } 191 | 192 | // sublineを見つける 193 | var sublines = seg[n+1]; 194 | var i = 0; 195 | cap = sublines.length-1; 196 | while(pos > sublines[i] && i < cap){ 197 | pos -= sublines[i]; 198 | i++; 199 | } 200 | var t = (i/++cap)+(pos/(cap*sublines[i])); 201 | 202 | // x/yを見つける 203 | n = (n*2)+2; 204 | var inv = 1 - t; 205 | target.x = inv*inv * path[n-2] + 2 * inv * t * path[n+0] + t*t * path[n+2]; 206 | target.y = inv*inv * path[n-1] + 2 * inv * t * path[n+1] + t*t * path[n+3]; 207 | 208 | // 方向 209 | if(data.orient){ 210 | target.rotation = 57.2957795 * Math.atan2( 211 | (path[n+1]-path[n-1])*inv + (path[n+3]-path[n+1])*t, 212 | (path[n+0]-path[n-2])*inv + (path[n+2]-path[n+0])*t); 213 | } 214 | 215 | return target; 216 | }; 217 | 218 | // パブリックプロパティ: 219 | 220 | // プライベートプロパティ: 221 | 222 | // コンストラクタ: 223 | 224 | // パブリックメソッド: 225 | 226 | // プライベートメソッド: 227 | 228 | createjs.MotionGuidePlugin = MotionGuidePlugin; 229 | }()); 230 | -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/display/DOMElement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * DOMElement 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | // TODO: ローテーションでの問題の修正。 34 | // TODO: getObjectsUnderPointからの排除。 35 | 36 | /** 37 | * このクラスはまだ実験的であり、より上級な使用ではバギーになることもあり得ます。バグを報告してください。 38 | * 39 | * DOMElementは、ディスプレイリストによってHTMLElementを関連づけることを許します。それは、追加された 40 | * {{#crossLink "Container"}}{{/crossLink}}の子であるかのように、DOM内で変換されます。しかしながら、 41 | * それはキャンバスに描画されていません、それ自体はキャンバスに相対的に持つz-indexが保持されます 42 | * (つまり、キャンバスの前もしくは後ろに描画されます)。 43 | * 44 | * DOMElementの位置は、DOMでのそれらの親ノードに相対的です。DOMオブジェクトは、ページ上の同じ位置を共有するように 45 | * キャンバスを含むdivに追加することをお勧めします。 46 | * 47 | * DOMElementは、キャンバスの境界の外側に表示したい、キャンバスの内容の上にHTMLエレメントを位置決めする 48 | * ために有用です。 49 | * 50 | *

マウスインタラクション

51 | * 52 | * DOMElementインスタンスは、完全なEaselJSディスプレイオブジェクトではなく、EaselJSマウスイベントもしくはHitTest 53 | * のようなメソッドのサポートに参加しません。DOMElementからマウスイベントを取得するには、htmlElementにハンドラを追加する 54 | * 必要があります(注:これはEventDispatcherをサポートしません)。 55 | * 56 | * var domElement = new createjs.DOMElement(htmlElement); 57 | * domElement.htmlElement.onclick = function() { 58 | * console.log("clicked"); 59 | * } 60 | * 61 | * @class DOMElement 62 | * @extends DisplayObject 63 | * @constructor 64 | * @param {HTMLElement} htmlElement 参照もしくは、管理するDOMエレメントのためのid。 65 | */ 66 | var DOMElement = function(htmlElement) { 67 | this.initialize(htmlElement); 68 | }; 69 | var p = DOMElement.prototype = new createjs.DisplayObject(); 70 | 71 | // パブリックプロパティ: 72 | /** 73 | * 管理するDOMオブジェクト 74 | * @property htmlElement 75 | * @type HTMLElement 76 | */ 77 | p.htmlElement = null; 78 | 79 | // プライベートプロパティ: 80 | /** 81 | * @property _oldMtx 82 | * @protected 83 | */ 84 | p._oldMtx = null; 85 | 86 | // コンストラクタ: 87 | /** 88 | * @property DisplayObject_initialize 89 | * @type Function 90 | * @private 91 | */ 92 | p.DisplayObject_initialize = p.initialize; 93 | 94 | /** 95 | * 初期化メソッド。 96 | * @method initialize 97 | * @protected 98 | */ 99 | p.initialize = function(htmlElement) { 100 | if (typeof(htmlElement)=="string") { htmlElement = document.getElementById(htmlElement); } 101 | this.DisplayObject_initialize(); 102 | this.mouseEnabled = false; 103 | this.htmlElement = htmlElement; 104 | var style = htmlElement.style; 105 | // 親が可視でない場合はdrawは呼び出されないので、これは_tickメソッドに依存しています。 106 | style.position = "absolute"; 107 | style.transformOrigin = style.WebkitTransformOrigin = style.msTransformOrigin = style.MozTransformOrigin = style.OTransformOrigin = "0% 0%"; 108 | } 109 | 110 | // パブリックメソッド: 111 | /** 112 | * キャンバスに描画する際に、ディスプレイオブジェクトが可視かどうかを示すtrueもしくはfalseを返します。 113 | * これは、ステージの境界内に表示されるかどうかを考慮することはありません。 114 | * NOTE: このメソッドは、高度な目的で使用する場合に有用かも知れませんが、主に内部で使用するためのものです。 115 | * @method isVisible 116 | * @return {Boolean} キャンバスに描かれた場合に、表示オブジェクトが可視かどうかを示すブール値 117 | */ 118 | p.isVisible = function() { 119 | return this.htmlElement != null; 120 | } 121 | 122 | /** 123 | * 指定されたコンテキストに、visible, alpha, shadow, transformを無視して描画します。 124 | * 描画が処理された場合はtrueを返します(オーバーライド機能に便利)。 125 | * NOTE: このメソッドは、高度な目的で使用する場合に有用かも知れませんが、主に内部で使用するためのものです。 126 | * @method draw 127 | * @param {CanvasRenderingContext2D} ctx 描きこむキャンバス2Dコンテキスト。 128 | * @param {Boolean} ignoreCache 描画操作が現在のキャッシュを無視するかどうかを指定します。 129 | * たとえば、キャッシュを描画するために使用されます(自身に戻って単に既存キャッシュを描画することを防ぐために)。 130 | */ 131 | p.draw = function(ctx, ignoreCache) { 132 | if (this.htmlElement == null) { return; } 133 | var mtx = this.getConcatenatedMatrix(this._matrix); 134 | 135 | var o = this.htmlElement; 136 | var style = o.style; 137 | 138 | // 親が可視でない場合はdrawは呼び出されないので、これは_tickメソッドに依存しています。 139 | if (this.visible) { style.visibility = "visible"; } 140 | else { return true; } 141 | 142 | var oMtx = this._oldMtx||{}; 143 | if (oMtx.alpha != mtx.alpha) { style.opacity = ""+mtx.alpha; oMtx.alpha = mtx.alpha; } 144 | if (oMtx.tx != mtx.tx || oMtx.ty != mtx.ty || oMtx.a != mtx.a || oMtx.b != mtx.b || oMtx.c != mtx.c || oMtx.d != mtx.d) { 145 | style.transform = style.WebkitTransform = style.OTransform = style.msTransform = ["matrix("+mtx.a,mtx.b,mtx.c,mtx.d,(mtx.tx+0.5|0),(mtx.ty+0.5|0)+")"].join(","); 146 | style.MozTransform = ["matrix("+mtx.a,mtx.b,mtx.c,mtx.d,(mtx.tx+0.5|0)+"px",(mtx.ty+0.5|0)+"px)"].join(","); 147 | this._oldMtx = mtx.clone(); 148 | } 149 | 150 | return true; 151 | }; 152 | 153 | /** 154 | * DOMElementには適用されません。 155 | * @method cache 156 | */ 157 | p.cache = function() {}; 158 | 159 | /** 160 | * DOMElementには適用されません。 161 | * @method uncache 162 | */ 163 | p.uncache = function() {}; 164 | 165 | /** 166 | * DOMElementには適用されません。 167 | * @method updateCache 168 | */ 169 | p.updateCache = function() {}; 170 | 171 | /** 172 | * DOMElementには適用されません。 173 | * @method hitArea 174 | */ 175 | p.hitTest = function() {}; 176 | 177 | /** 178 | * DOMElementには適用されません。 179 | * @method localToGlobal 180 | */ 181 | p.localToGlobal = function() {}; 182 | 183 | /** 184 | * DOMElementには適用されません。 185 | * @method globalToLocal 186 | */ 187 | p.globalToLocal = function() {}; 188 | 189 | /** 190 | * DOMElementには適用されません。 191 | * @method localToLocal 192 | */ 193 | p.localToLocal = function() {}; 194 | 195 | /** 196 | * DOMElementはクローンできません。エラーを投げます。 197 | * @method clone 198 | */ 199 | p.clone = function() { 200 | throw("DOMElement cannot be cloned.") 201 | }; 202 | 203 | /** 204 | * このオブジェクトの文字列表現を返します。 205 | * @method toString 206 | * @return {String} インスタンスの文字列表現。 207 | */ 208 | p.toString = function() { 209 | return "[DOMElement (name="+ this.name +")]"; 210 | }; 211 | 212 | /** 213 | * DOMElementインスタンスは完全なEaselJSディスプレイオブジェクトではなく、EaselJSマウスイベントに参加しないので、 214 | * Interactionイベントは、DOMElementインスタンスではなく、`htmlElement`に追加されるべきです。 215 | * @event click 216 | */ 217 | 218 | /** 219 | * DOMElementインスタンスは完全なEaselJSディスプレイオブジェクトではなく、EaselJSマウスイベントに参加しないので、 220 | * Interactionイベントは、DOMElementインスタンスではなく、`htmlElement`に追加されるべきです。 221 | * @event dblClick 222 | */ 223 | 224 | /** 225 | * DOMElementインスタンスは完全なEaselJSディスプレイオブジェクトではなく、EaselJSマウスイベントに参加しないので、 226 | * Interactionイベントは、DOMElementインスタンスではなく、`htmlElement`に追加されるべきです。 227 | * @event mousedown 228 | */ 229 | 230 | /** 231 | * HTMLElementは、DOMElementインスタンスではなく、mouseoverイベントを受け取ることができます。 232 | * DOMElementインスタンスは完全なEaselJSディスプレイオブジェクトではなく、EaselJSマウスイベントに参加しないためです。 233 | * @event mouseover 234 | */ 235 | 236 | /** 237 | * DOMElementには適用されません。 238 | * @event tick 239 | */ 240 | 241 | 242 | // プライベートメソッド: 243 | /** 244 | * @property DisplayObject__tick 245 | * @type Function 246 | * @protected 247 | */ 248 | p.DisplayObject__tick = p._tick; 249 | 250 | /** 251 | * @method _tick 252 | * @protected 253 | */ 254 | p._tick = function(params) { 255 | // TODO: これを回避する方法を見つける。 256 | this.htmlElement.style.visibility = "hidden"; 257 | this.DisplayObject__tick(params); 258 | }; 259 | 260 | createjs.DOMElement = DOMElement; 261 | }()); -------------------------------------------------------------------------------- /ja/EaselJS/0.6.0/src/easeljs/utils/SpriteSheetUtils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * SpriteSheetUtils 3 | * Visit http://createjs.com/ for documentation, updates and examples. 4 | * 5 | * Copyright (c) 2010 gskinner.com, inc. 6 | * 7 | * Permission is hereby granted, free of charge, to any person 8 | * obtaining a copy of this software and associated documentation 9 | * files (the "Software"), to deal in the Software without 10 | * restriction, including without limitation the rights to use, 11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following 14 | * conditions: 15 | * 16 | * The above copyright notice and this permission notice shall be 17 | * included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | * OTHER DEALINGS IN THE SOFTWARE. 27 | */ 28 | 29 | // 名前空間: 30 | this.createjs = this.createjs||{}; 31 | 32 | (function() { 33 | // コンストラクタ: 34 | /** 35 | * SpriteSheetUtilsクラスは、{{#crossLink "SpriteSheet"}}{{/crossLink}}と協調して動作する静的メソッドの集合です。 36 | * スプライトシートは連続した複数の画像(通常はアニメーションフレーム)が格子状に一枚の画像にまとめられたものです。 37 | * 例えば、8枚の100x100 の画像によって構成されるアニメーションは、400x200のスプライトシートにまとめることができます(4フレームごとに2列)。 38 | * SpriteSheetUtils クラスは静的なインターフェースを提供しており、インスタンス化すべきではありません。 39 | * @class SpriteSheetUtils 40 | * @static 41 | **/ 42 | var SpriteSheetUtils = function() { 43 | throw "SpriteSheetUtils cannot be instantiated"; 44 | } 45 | 46 | /** 47 | * @property _workingCanvas 48 | * @static 49 | * @type HTMLCanvasElement | Object 50 | * @protected 51 | */ 52 | SpriteSheetUtils._workingCanvas = createjs.createCanvas?createjs.createCanvas():document.createElement("canvas"); 53 | 54 | /** 55 | * @property _workingContext 56 | * @static 57 | * @type CanvasRenderingContext2D 58 | * @protected 59 | */ 60 | SpriteSheetUtils._workingContext = SpriteSheetUtils._workingCanvas.getContext("2d"); 61 | 62 | // public static methods: 63 | /** 64 | * これは実験的なメソッドであり、おそらくバグがあります。問題があれば報告してください。

65 | * 既存のスプライトシートに対して、元のフレームを水平方向、垂直方向、または両方に反転する形で拡張します。 66 | * また、適切なアニメーションとフレームのデータを追加します。反転されたアニメーションは元々のものに接頭辞が追加された名前を持ちます(_h, _v, _hv から適切なもの)。 67 | * スプライトシートの画像は、このメソッドを使用する前に完全にロードされるよう気を付けてください。 68 | *

69 | * 例:
70 | * SpriteSheetUtils.addFlippedFrames(mySpriteSheet, true, true); 71 | * 上の例では、水平方向に反転されたフレームと、垂直方向に反転されたフレームを追加します。 72 | *

73 | * 注記として、全ての表示オブジェクトは、scaleXまたはscaleYプロパティをマイナスに設定することでも、反転させることができます。 74 | * この方法では、いくつかのブラウザ(特に、ハードウェアアクセラレートされたCanvasを持たないもの)では若干パフォーマンスに悪影響があります。 75 | * このことが、addFlippedFramesを使用できるようにしている理由です。 76 | * @method addFlippedFrames 77 | * @static 78 | * @param {SpriteSheet} spriteSheet 79 | * @param {Boolean} horizontal trueの場合、水平に反転されたフレームが追加されます。 80 | * @param {Boolean} vertical trueの場合、垂直に反転されたフレームが追加されます。 81 | * @param {Boolean} both trueの場合、水平および垂直に反転されたフレームが追加されます。 82 | **/ 83 | SpriteSheetUtils.addFlippedFrames = function(spriteSheet, horizontal, vertical, both) { 84 | if (!horizontal && !vertical && !both) { return; } 85 | 86 | var count = 0; 87 | if (horizontal) { SpriteSheetUtils._flip(spriteSheet,++count,true,false); } 88 | if (vertical) { SpriteSheetUtils._flip(spriteSheet,++count,false,true); } 89 | if (both) { SpriteSheetUtils._flip(spriteSheet,++count,true,true); } 90 | } 91 | 92 | /** 93 | * 特定のスプライトシートから、1フレームを新しいPNG画像として返します。 94 | * 注意点としては、ほとんど全ての場合において、この方法によりフレームを分割し、Bitmapインスタンスとして表示するよりも、 95 | * 一時停止したBitmapAnimationインスタンスを用いたほうがより良い結果になります。 96 | * @method extractFrame 97 | * @static 98 | * @param {Image} spriteSheet フレームを抽出する元となるSpriteSheetインスタンス 99 | * @param {Number} frame 抽出したいフレーム番号またはアニメーション名。 100 | * アニメーション名が指定された場合、アニメーション中の最初のフレームのみが抽出されます。 101 | * @return {Image} 特定のスプライトシートから1フレーム抽出された新しいPNG画像 102 | */ 103 | SpriteSheetUtils.extractFrame = function(spriteSheet, frame) { 104 | if (isNaN(frame)) { 105 | frame = spriteSheet.getAnimation(frame).frames[0]; 106 | } 107 | var data = spriteSheet.getFrame(frame); 108 | if (!data) { return null; } 109 | var r = data.rect; 110 | var canvas = SpriteSheetUtils._workingCanvas; 111 | canvas.width = r.width; 112 | canvas.height = r.height; 113 | SpriteSheetUtils._workingContext.drawImage(data.image, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height); 114 | var img = new Image(); 115 | img.src = canvas.toDataURL("image/png"); 116 | return img; 117 | } 118 | 119 | /** 120 | * 1画像のRGBチャンネルと、別の画像のアルファチャンネルを結合します。 121 | * このメソッドでは色のデータを含む圧縮されたJPEG画像とアルファチャンネルを含むモノクロのPNG32画像を使用することも可能です。 122 | * 特定の種類の画像(JPEG圧縮としてレンダリングされるような詳細を持つ物)を使用することは、単体のRGBAのPNG32形式画像にくらべて、多大なファイルサイズの節約になります。 123 | * このメソッドはとても高速です(通常、実行の度に1~2ms程度)。 124 | * @method mergeAlpha 125 | * @static 126 | * @param {Image} rbgImage RGBチャンネルを持つ画像(またはCanvas)。 127 | * @param {Image} alphaImage アルファチャンネルを持つ画像(またはCanvas)。 128 | * @param {Canvas} canvas (オプション). 指定した場合、そのCanvasが使用され、戻り値として返されます。それ以外の場合、新しいCanvasが生成されます。 129 | * @return {Canvas} 画像データと結合されたCanvas。これはBitmapやSpriteSheetのソースとして使用することができます。 130 | */ 131 | SpriteSheetUtils.mergeAlpha = function(rgbImage, alphaImage, canvas) { 132 | if (!canvas) { canvas = createjs.createCanvas?createjs.createCanvas():document.createElement("canvas"); } 133 | canvas.width = Math.max(alphaImage.width, rgbImage.width); 134 | canvas.height = Math.max(alphaImage.height, rgbImage.height); 135 | var ctx = canvas.getContext("2d"); 136 | ctx.save(); 137 | ctx.drawImage(rgbImage,0,0); 138 | ctx.globalCompositeOperation = "destination-in"; 139 | ctx.drawImage(alphaImage,0,0); 140 | ctx.restore(); 141 | return canvas; 142 | } 143 | 144 | 145 | // private static methods: 146 | SpriteSheetUtils._flip = function(spriteSheet, count, h, v) { 147 | var imgs = spriteSheet._images; 148 | var canvas = SpriteSheetUtils._workingCanvas; 149 | var ctx = SpriteSheetUtils._workingContext; 150 | var il = imgs.length/count; 151 | for (var i=0;i例 44 | * var stage = new createjs.Stage("canvas"); 45 | * createjs.Touch.enable(stage); 46 | * 47 | * @class Touch 48 | * @static 49 | **/ 50 | var Touch = function() { 51 | throw "Touch cannot be instantiated"; 52 | }; 53 | 54 | // パブリックスタティックメソッド: 55 | /** 56 | * 現在のブラウザでタッチがサポートされていればtrueを返却する 57 | * @method isSupported 58 | * @return {Boolean} 現在のブラウザでタッチがサポートされているかを示す 59 | * @static 60 | **/ 61 | Touch.isSupported = function() { 62 | return ('ontouchstart' in window) || // iOS 63 | (window.navigator['msPointerEnabled']); // IE10 64 | }; 65 | 66 | /** 67 | * 特定のEaselJSのステージに対してタッチ作用を有効にする。現在iOS(加え、モダンなAndroidブラウザなどの互換ブラウザ)、 68 | * IE10がサポート。 69 | * シングルタッチとマルチタッチモードの両方をサポート。EaselJSのMouseEventモデルを拡張するが、ダブルクリックまたは 70 | * オーバー/アウトイベントはサポートしていない。詳細についてはMouseEvent.pointerIDを参照のこと。 71 | * @method enable 72 | * @param {Stage} stage タッチを有効にするステージ 73 | * @param {Boolean} [singleTouch=false] trueのとき、単一のタッチのみが一度に発生する 74 | * @param {Boolean} [allowDefault=false] trueのとき、標準のジェスチャーアクション(例. スクロール、ズーム)は 75 | * ユーザが扱っているキャンバス上で有効となる 76 | * @return {Boolean} 対象のステージへタッチの有効化ができたとき、trueを返却する 77 | * @static 78 | **/ 79 | Touch.enable = function(stage, singleTouch, allowDefault) { 80 | if (!stage || !stage.canvas || !Touch.isSupported()) { return false; } 81 | 82 | // 必須なプロパティをステージに織り込む 83 | stage.__touch = {pointers:{}, multitouch:!singleTouch, preventDefault:!allowDefault, count:0}; 84 | 85 | // 将来、重複呼び出しを防ぐために標準のマウスイベントモデルを無効にする必要があるかも知れないことに注意してください。 86 | // しかしながら、iOSデバイス上では特に問題はなさそうです。 87 | if ('ontouchstart' in window) { Touch._IOS_enable(stage); } 88 | else if (window.navigator['msPointerEnabled']) { Touch._IE_enable(stage); } 89 | return true; 90 | }; 91 | 92 | /** 93 | * ステージ上でTouch.enableを呼んだ際に設定されたリスナーを全て取り除く 94 | * @method disable 95 | * @param {Stage} stage タッチを無効にする対象のステージ 96 | * @static 97 | **/ 98 | Touch.disable = function(stage) { 99 | if (!stage) { return; } 100 | if ('ontouchstart' in window) { Touch._IOS_disable(stage); } 101 | else if (window.navigator['msPointerEnabled']) { Touch._IE_disable(stage); } 102 | }; 103 | 104 | // プライベートスタティックメソッド: 105 | 106 | /** 107 | * @method _IOS_enable 108 | * @protected 109 | * @param {Stage} stage 110 | * @static 111 | **/ 112 | Touch._IOS_enable = function(stage) { 113 | var canvas = stage.canvas; 114 | var f = stage.__touch.f = function(e) { Touch._IOS_handleEvent(stage,e); }; 115 | canvas.addEventListener("touchstart", f, false); 116 | canvas.addEventListener("touchmove", f, false); 117 | canvas.addEventListener("touchend", f, false); 118 | canvas.addEventListener("touchcancel", f, false); 119 | }; 120 | 121 | /** 122 | * @method _IOS_disable 123 | * @protected 124 | * @param {Stage} stage 125 | * @static 126 | **/ 127 | Touch._IOS_disable = function(stage) { 128 | var canvas = stage.canvas; 129 | if (!canvas) { return; } 130 | var f = stage.__touch.f; 131 | canvas.removeEventListener("touchstart", f, false); 132 | canvas.removeEventListener("touchmove", f, false); 133 | canvas.removeEventListener("touchend", f, false); 134 | canvas.removeEventListener("touchcancel", f, false); 135 | }; 136 | 137 | /** 138 | * @method _IOS_handleEvent 139 | * @protected 140 | * @static 141 | **/ 142 | Touch._IOS_handleEvent = function(stage, e) { 143 | if (!stage) { return; } 144 | if (stage.__touch.preventDefault) { e.preventDefault&&e.preventDefault(); } 145 | var touches = e.changedTouches; 146 | var type = e.type; 147 | for (var i= 0,l=touches.length; iTweenJS.comのさまざまなイースタイプの概要は 48 | * spark table demoを参照してください。 49 | * 50 | * 数式の由来はRobert Pennerによります。 51 | * @class Ease 52 | * @static 53 | **/ 54 | var Ease = function() { 55 | throw "Ease cannot be instantiated."; 56 | } 57 | 58 | // パブリックスタティックメソッド: 59 | /** 60 | * @method linear 61 | * @static 62 | **/ 63 | Ease.linear = function(t) { return t; } 64 | 65 | /** 66 | * linearと同一。 67 | * @method none 68 | * @static 69 | **/ 70 | Ease.none = Ease.linear; 71 | 72 | /** 73 | * Flash Proにおける単純な-100から100までのイージングを模倣しています。 74 | * @method get 75 | * @param amount イースの強さや方向を示す -1(ease in)から 1 (ease out)までの値。 76 | * @static 77 | **/ 78 | Ease.get = function(amount) { 79 | if (amount < -1) { amount = -1; } 80 | if (amount > 1) { amount = 1; } 81 | return function(t) { 82 | if (amount==0) { return t; } 83 | if (amount<0) { return t*(t*-amount+1+amount); } 84 | return t*((2-t)*amount+(1-amount)); 85 | } 86 | } 87 | 88 | /** 89 | * 設定可能な指数関数のイース。 90 | * @method getPowIn 91 | * @param pow 使用する指数 (例. 3 は、3次のイースを返します)。 92 | * @static 93 | **/ 94 | Ease.getPowIn = function(pow) { 95 | return function(t) { 96 | return Math.pow(t,pow); 97 | } 98 | } 99 | 100 | 101 | /** 102 | * 設定可能な指数関数のイース。 103 | * @method getPowOut 104 | * @param pow 使用する指数 (例. 3 は、3次のイースを返します)。 105 | * @static 106 | **/ 107 | Ease.getPowOut = function(pow) { 108 | return function(t) { 109 | return 1-Math.pow(1-t,pow); 110 | } 111 | } 112 | 113 | 114 | /** 115 | * 設定可能な指数関数のイース。 116 | * @method getPowInOut 117 | * @param pow 使用する指数 (例. 3 は、3次のイースを返します)。 118 | * @static 119 | **/ 120 | Ease.getPowInOut = function(pow) { 121 | return function(t) { 122 | if ((t*=2)<1) return 0.5*Math.pow(t,pow); 123 | return 1-0.5*Math.abs(Math.pow(2-t,pow)); 124 | } 125 | } 126 | 127 | 128 | /** 129 | * @method quadIn 130 | * @static 131 | **/ 132 | Ease.quadIn = Ease.getPowIn(2); 133 | /** 134 | * @method quadOut 135 | * @static 136 | **/ 137 | Ease.quadOut = Ease.getPowOut(2); 138 | /** 139 | * @method quadInOut 140 | * @static 141 | **/ 142 | Ease.quadInOut = Ease.getPowInOut(2); 143 | 144 | 145 | /** 146 | * @method cubicIn 147 | * @static 148 | **/ 149 | Ease.cubicIn = Ease.getPowIn(3); 150 | /** 151 | * @method cubicOut 152 | * @static 153 | **/ 154 | Ease.cubicOut = Ease.getPowOut(3); 155 | /** 156 | * @method cubicInOut 157 | * @static 158 | **/ 159 | Ease.cubicInOut = Ease.getPowInOut(3); 160 | 161 | 162 | /** 163 | * @method quartIn 164 | * @static 165 | **/ 166 | Ease.quartIn = Ease.getPowIn(4); 167 | /** 168 | * @method quartOut 169 | * @static 170 | **/ 171 | Ease.quartOut = Ease.getPowOut(4); 172 | /** 173 | * @method quartInOut 174 | * @static 175 | **/ 176 | Ease.quartInOut = Ease.getPowInOut(4); 177 | 178 | 179 | /** 180 | * @method quintIn 181 | * @static 182 | **/ 183 | Ease.quintIn = Ease.getPowIn(5); 184 | /** 185 | * @method quintOut 186 | * @static 187 | **/ 188 | Ease.quintOut = Ease.getPowOut(5); 189 | /** 190 | * @method quintInOut 191 | * @static 192 | **/ 193 | Ease.quintInOut = Ease.getPowInOut(5); 194 | 195 | 196 | /** 197 | * @method sineIn 198 | * @static 199 | **/ 200 | Ease.sineIn = function(t) { 201 | return 1-Math.cos(t*Math.PI/2); 202 | } 203 | 204 | /** 205 | * @method sineOut 206 | * @static 207 | **/ 208 | Ease.sineOut = function(t) { 209 | return Math.sin(t*Math.PI/2); 210 | } 211 | 212 | /** 213 | * @method sineInOut 214 | * @static 215 | **/ 216 | Ease.sineInOut = function(t) { 217 | return -0.5*(Math.cos(Math.PI*t) - 1) 218 | } 219 | 220 | 221 | /** 222 | * 設定可能な "back in"イース。 223 | * @method getBackIn 224 | * @param amount イースの強さ。 225 | * @static 226 | **/ 227 | Ease.getBackIn = function(amount) { 228 | return function(t) { 229 | return t*t*((amount+1)*t-amount); 230 | } 231 | } 232 | /** 233 | * @method backIn 234 | * @static 235 | **/ 236 | Ease.backIn = Ease.getBackIn(1.7); 237 | 238 | /** 239 | * 設定可能な "back out"イース。 240 | * @method getBackOut 241 | * @param amount イースの強さ。 242 | * @static 243 | **/ 244 | Ease.getBackOut = function(amount) { 245 | return function(t) { 246 | return (--t*t*((amount+1)*t + amount) + 1); 247 | } 248 | } 249 | /** 250 | * @method backOut 251 | * @static 252 | **/ 253 | Ease.backOut = Ease.getBackOut(1.7); 254 | 255 | /** 256 | * 設定可能な "back in out"イース。 257 | * @method getBackInOut 258 | * @param amount イースの強さ。 259 | * @static 260 | **/ 261 | Ease.getBackInOut = function(amount) { 262 | amount*=1.525; 263 | return function(t) { 264 | if ((t*=2)<1) return 0.5*(t*t*((amount+1)*t-amount)); 265 | return 0.5*((t-=2)*t*((amount+1)*t+amount)+2); 266 | } 267 | } 268 | /** 269 | * @method backInOut 270 | * @static 271 | **/ 272 | Ease.backInOut = Ease.getBackInOut(1.7); 273 | 274 | 275 | /** 276 | * @method circIn 277 | * @static 278 | **/ 279 | Ease.circIn = function(t) { 280 | return -(Math.sqrt(1-t*t)- 1); 281 | } 282 | 283 | /** 284 | * @method circOut 285 | * @static 286 | **/ 287 | Ease.circOut = function(t) { 288 | return Math.sqrt(1-(--t)*t); 289 | } 290 | 291 | /** 292 | * @method circInOut 293 | * @static 294 | **/ 295 | Ease.circInOut = function(t) { 296 | if ((t*=2) < 1) return -0.5*(Math.sqrt(1-t*t)-1); 297 | return 0.5*(Math.sqrt(1-(t-=2)*t)+1); 298 | } 299 | 300 | /** 301 | * @method bounceIn 302 | * @static 303 | **/ 304 | Ease.bounceIn = function(t) { 305 | return 1-Ease.bounceOut(1-t); 306 | } 307 | 308 | /** 309 | * @method bounceOut 310 | * @static 311 | **/ 312 | Ease.bounceOut = function(t) { 313 | if (t < 1/2.75) { 314 | return (7.5625*t*t); 315 | } else if (t < 2/2.75) { 316 | return (7.5625*(t-=1.5/2.75)*t+0.75); 317 | } else if (t < 2.5/2.75) { 318 | return (7.5625*(t-=2.25/2.75)*t+0.9375); 319 | } else { 320 | return (7.5625*(t-=2.625/2.75)*t +0.984375); 321 | } 322 | } 323 | 324 | /** 325 | * @method bounceInOut 326 | * @static 327 | **/ 328 | Ease.bounceInOut = function(t) { 329 | if (t<0.5) return Ease.bounceIn (t*2) * .5; 330 | return Ease.bounceOut(t*2-1)*0.5+0.5; 331 | } 332 | 333 | 334 | /** 335 | * 設定可能な弾性のイース。 336 | * @method getElasticIn 337 | * @param amplitude 338 | * @param period 339 | * @static 340 | **/ 341 | Ease.getElasticIn = function(amplitude,period) { 342 | var pi2 = Math.PI*2; 343 | return function(t) { 344 | if (t==0 || t==1) return t; 345 | var s = period/pi2*Math.asin(1/amplitude); 346 | return -(amplitude*Math.pow(2,10*(t-=1))*Math.sin((t-s)*pi2/period)); 347 | } 348 | } 349 | /** 350 | * @method elasticIn 351 | * @static 352 | **/ 353 | Ease.elasticIn = Ease.getElasticIn(1,0.3); 354 | 355 | /** 356 | * 設定可能な弾性のイース。 357 | * @method getElasticOut 358 | * @param amplitude 359 | * @param period 360 | * @static 361 | **/ 362 | Ease.getElasticOut = function(amplitude,period) { 363 | var pi2 = Math.PI*2; 364 | return function(t) { 365 | if (t==0 || t==1) return t; 366 | var s = period/pi2 * Math.asin(1/amplitude); 367 | return (amplitude*Math.pow(2,-10*t)*Math.sin((t-s)*pi2/period )+1); 368 | } 369 | } 370 | /** 371 | * @method elasticOut 372 | * @static 373 | **/ 374 | Ease.elasticOut = Ease.getElasticOut(1,0.3); 375 | 376 | /** 377 | * 設定可能な弾性のイース。 378 | * @method getElasticInOut 379 | * @param amplitude 380 | * @param period 381 | * @static 382 | **/ 383 | Ease.getElasticInOut = function(amplitude,period) { 384 | var pi2 = Math.PI*2; 385 | return function(t) { 386 | var s = period/pi2 * Math.asin(1/amplitude); 387 | if ((t*=2)<1) return -0.5*(amplitude*Math.pow(2,10*(t-=1))*Math.sin( (t-s)*pi2/period )); 388 | return amplitude*Math.pow(2,-10*(t-=1))*Math.sin((t-s)*pi2/period)*0.5+1; 389 | } 390 | } 391 | /** 392 | * @method elasticInOut 393 | * @static 394 | **/ 395 | Ease.elasticInOut = Ease.getElasticInOut(1,0.3*1.5); 396 | 397 | createjs.Ease = Ease; 398 | }()); 399 | --------------------------------------------------------------------------------