1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
{
"uid": "F0C3CB8EK77BEA4A14S967DE5584B7333520",
"isLoaded": true,
"lastModificationTime": 0,
"items": {
"name": "Component_GridLayoutBehavior",
"type": "game_script",
"order": 7,
"content": "# ===================================================================\n#\n# Script: Component_GridLayoutBehavior\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_GridLayoutBehavior extends gs.Component_LayoutBehavior\n ###*\n * Turns a game object into a free-layout and layouts all sub-objects\n * in a grid of rows and columns.\n\n * @module gs\n * @class Component_GridLayoutBehavior\n * @extends gs.Component_LayoutBehavior\n * @memberof gs\n * @constructor\n ###\n constructor: ->\n super\n \n @column = 0\n @row = 0\n\n sizeToFit: ->\n \n ###*\n * Updates a specified control.\n *\n * @method updateControl\n * @protected\n * @param {gs.Object_Base} control The control to update\n ### \n updateControl: (control) ->\n super\n \n cellSpacing = @object.cellSpacing\n rect = @object.dstRect\n \n control.parent = @object\n control.dstRect.x = cellSpacing[0] + @column * (control.dstRect.width+cellSpacing[2])\n control.dstRect.y = cellSpacing[1] + @row * (control.dstRect.height+cellSpacing[3])\n if control.needsUpdate\n control.needsUpdate = no\n control.update()\n \n if @object.sizeToFit\n rect.width = Math.max(control.dstRect.x + control.dstRect.width + cellSpacing[2], rect.width || 0)\n rect.height = Math.max(control.dstRect.y + control.dstRect.height + cellSpacing[3], rect.height || 0)\n \n \n ###*\n * Updates the grid-layout.\n *\n * @method update\n ###\n update: ->\n @updateOrigin()\n \n cellSpacing = @object.cellSpacing\n rows = @object.rows\n columns = @object.columns\n @row = 0\n @column = 0\n offset = (@object.listOffset||0) * (rows * columns) \n count = Math.min(@object.subObjects.length, rows * columns + offset)\n rect = @object.dstRect\n \n for i in [offset...count]\n control = @object.subObjects[i]\n control.index = i\n\n @updateControl(control)\n\n @column++\n if @column >= columns\n @column = 0\n @row++\n\n if @row >= rows\n break\n \n if @object.clipRect?\n @object.clipRect.set(rect.x, rect.y, rect.width, rect.height) \n \ngs.Component_GridLayoutBehavior = Component_GridLayoutBehavior",
"parentId": "01A95DA3K01E8A4CB4SBE17E790BCE1FC035",
"folder": false,
"compiledContent": "var Component_GridLayoutBehavior,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\nComponent_GridLayoutBehavior = (function(superClass) {\n extend(Component_GridLayoutBehavior, superClass);\n\n\n /**\n * Turns a game object into a free-layout and layouts all sub-objects\n * in a grid of rows and columns.\n \n * @module gs\n * @class Component_GridLayoutBehavior\n * @extends gs.Component_LayoutBehavior\n * @memberof gs\n * @constructor\n */\n\n function Component_GridLayoutBehavior() {\n Component_GridLayoutBehavior.__super__.constructor.apply(this, arguments);\n this.column = 0;\n this.row = 0;\n }\n\n Component_GridLayoutBehavior.prototype.sizeToFit = function() {};\n\n\n /**\n * Updates a specified control.\n *\n * @method updateControl\n * @protected\n * @param {gs.Object_Base} control The control to update\n */\n\n Component_GridLayoutBehavior.prototype.updateControl = function(control) {\n var cellSpacing, rect;\n Component_GridLayoutBehavior.__super__.updateControl.apply(this, arguments);\n cellSpacing = this.object.cellSpacing;\n rect = this.object.dstRect;\n control.parent = this.object;\n control.dstRect.x = cellSpacing[0] + this.column * (control.dstRect.width + cellSpacing[2]);\n control.dstRect.y = cellSpacing[1] + this.row * (control.dstRect.height + cellSpacing[3]);\n if (control.needsUpdate) {\n control.needsUpdate = false;\n control.update();\n }\n if (this.object.sizeToFit) {\n rect.width = Math.max(control.dstRect.x + control.dstRect.width + cellSpacing[2], rect.width || 0);\n return rect.height = Math.max(control.dstRect.y + control.dstRect.height + cellSpacing[3], rect.height || 0);\n }\n };\n\n\n /**\n * Updates the grid-layout.\n *\n * @method update\n */\n\n Component_GridLayoutBehavior.prototype.update = function() {\n var cellSpacing, columns, control, count, i, j, offset, rect, ref, ref1, rows;\n this.updateOrigin();\n cellSpacing = this.object.cellSpacing;\n rows = this.object.rows;\n columns = this.object.columns;\n this.row = 0;\n this.column = 0;\n offset = (this.object.listOffset || 0) * (rows * columns);\n count = Math.min(this.object.subObjects.length, rows * columns + offset);\n rect = this.object.dstRect;\n for (i = j = ref = offset, ref1 = count; ref <= ref1 ? j < ref1 : j > ref1; i = ref <= ref1 ? ++j : --j) {\n control = this.object.subObjects[i];\n control.index = i;\n this.updateControl(control);\n this.column++;\n if (this.column >= columns) {\n this.column = 0;\n this.row++;\n }\n if (this.row >= rows) {\n break;\n }\n }\n if (this.object.clipRect != null) {\n return this.object.clipRect.set(rect.x, rect.y, rect.width, rect.height);\n }\n };\n\n return Component_GridLayoutBehavior;\n\n})(gs.Component_LayoutBehavior);\n\ngs.Component_GridLayoutBehavior = Component_GridLayoutBehavior;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsNEJBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7Ozs7RUFVYSxzQ0FBQTtJQUNULCtEQUFBLFNBQUE7SUFFQSxJQUFDLENBQUEsTUFBRCxHQUFVO0lBQ1YsSUFBQyxDQUFBLEdBQUQsR0FBTztFQUpFOzt5Q0FNYixTQUFBLEdBQVcsU0FBQSxHQUFBOzs7QUFFWDs7Ozs7Ozs7eUNBT0EsYUFBQSxHQUFlLFNBQUMsT0FBRDtBQUNYLFFBQUE7SUFBQSxpRUFBQSxTQUFBO0lBRUEsV0FBQSxHQUFjLElBQUMsQ0FBQSxNQUFNLENBQUM7SUFDdEIsSUFBQSxHQUFPLElBQUMsQ0FBQSxNQUFNLENBQUM7SUFFZixPQUFPLENBQUMsTUFBUixHQUFpQixJQUFDLENBQUE7SUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFoQixHQUFvQixXQUFZLENBQUEsQ0FBQSxDQUFaLEdBQWlCLElBQUMsQ0FBQSxNQUFELEdBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQWhCLEdBQXNCLFdBQVksQ0FBQSxDQUFBLENBQW5DO0lBQy9DLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBaEIsR0FBb0IsV0FBWSxDQUFBLENBQUEsQ0FBWixHQUFpQixJQUFDLENBQUEsR0FBRCxHQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFoQixHQUF1QixXQUFZLENBQUEsQ0FBQSxDQUFwQztJQUM1QyxJQUFHLE9BQU8sQ0FBQyxXQUFYO01BQ0ksT0FBTyxDQUFDLFdBQVIsR0FBc0I7TUFDdEIsT0FBTyxDQUFDLE1BQVIsQ0FBQSxFQUZKOztJQUlBLElBQUcsSUFBQyxDQUFBLE1BQU0sQ0FBQyxTQUFYO01BQ0ksSUFBSSxDQUFDLEtBQUwsR0FBYSxJQUFJLENBQUMsR0FBTCxDQUFTLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBaEIsR0FBb0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFwQyxHQUE0QyxXQUFZLENBQUEsQ0FBQSxDQUFqRSxFQUFxRSxJQUFJLENBQUMsS0FBTCxJQUFjLENBQW5GO2FBQ2IsSUFBSSxDQUFDLE1BQUwsR0FBYyxJQUFJLENBQUMsR0FBTCxDQUFTLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBaEIsR0FBb0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFwQyxHQUE2QyxXQUFZLENBQUEsQ0FBQSxDQUFsRSxFQUFzRSxJQUFJLENBQUMsTUFBTCxJQUFlLENBQXJGLEVBRmxCOztFQWJXOzs7QUFrQmY7Ozs7Ozt5Q0FLQSxNQUFBLEdBQVEsU0FBQTtBQUNKLFFBQUE7SUFBQSxJQUFDLENBQUEsWUFBRCxDQUFBO0lBRUEsV0FBQSxHQUFjLElBQUMsQ0FBQSxNQUFNLENBQUM7SUFDdEIsSUFBQSxHQUFPLElBQUMsQ0FBQSxNQUFNLENBQUM7SUFDZixPQUFBLEdBQVUsSUFBQyxDQUFBLE1BQU0sQ0FBQztJQUNsQixJQUFDLENBQUEsR0FBRCxHQUFPO0lBQ1AsSUFBQyxDQUFBLE1BQUQsR0FBVTtJQUNWLE1BQUEsR0FBUyxDQUFDLElBQUMsQ0FBQSxNQUFNLENBQUMsVUFBUixJQUFvQixDQUFyQixDQUFBLEdBQTBCLENBQUMsSUFBQSxHQUFPLE9BQVI7SUFDbkMsS0FBQSxHQUFRLElBQUksQ0FBQyxHQUFMLENBQVMsSUFBQyxDQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBNUIsRUFBb0MsSUFBQSxHQUFPLE9BQVAsR0FBaUIsTUFBckQ7SUFDUixJQUFBLEdBQU8sSUFBQyxDQUFBLE1BQU0sQ0FBQztBQUVmLFNBQVMsa0dBQVQ7TUFDSSxPQUFBLEdBQVUsSUFBQyxDQUFBLE1BQU0sQ0FBQyxVQUFXLENBQUEsQ0FBQTtNQUM3QixPQUFPLENBQUMsS0FBUixHQUFnQjtNQUVoQixJQUFDLENBQUEsYUFBRCxDQUFlLE9BQWY7TUFFQSxJQUFDLENBQUEsTUFBRDtNQUNBLElBQUcsSUFBQyxDQUFBLE1BQUQsSUFBVyxPQUFkO1FBQ0ksSUFBQyxDQUFBLE1BQUQsR0FBVTtRQUNWLElBQUMsQ0FBQSxHQUFELEdBRko7O01BSUEsSUFBRyxJQUFDLENBQUEsR0FBRCxJQUFRLElBQVg7QUFDSSxjQURKOztBQVhKO0lBY0EsSUFBRyw0QkFBSDthQUNJLElBQUMsQ0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQWpCLENBQXFCLElBQUksQ0FBQyxDQUExQixFQUE2QixJQUFJLENBQUMsQ0FBbEMsRUFBcUMsSUFBSSxDQUFDLEtBQTFDLEVBQWlELElBQUksQ0FBQyxNQUF0RCxFQURKOztFQTFCSTs7OztHQWpEK0IsRUFBRSxDQUFDOztBQThFOUMsRUFBRSxDQUFDLDRCQUFILEdBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBDb21wb25lbnRfR3JpZExheW91dEJlaGF2aW9yXG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBDb21wb25lbnRfR3JpZExheW91dEJlaGF2aW9yIGV4dGVuZHMgZ3MuQ29tcG9uZW50X0xheW91dEJlaGF2aW9yXG4gICAgIyMjKlxuICAgICogVHVybnMgYSBnYW1lIG9iamVjdCBpbnRvIGEgZnJlZS1sYXlvdXQgYW5kIGxheW91dHMgYWxsIHN1Yi1vYmplY3RzXG4gICAgKiBpbiBhIGdyaWQgb2Ygcm93cyBhbmQgY29sdW1ucy5cblxuICAgICogQG1vZHVsZSBnc1xuICAgICogQGNsYXNzIENvbXBvbmVudF9HcmlkTGF5b3V0QmVoYXZpb3JcbiAgICAqIEBleHRlbmRzIGdzLkNvbXBvbmVudF9MYXlvdXRCZWhhdmlvclxuICAgICogQG1lbWJlcm9mIGdzXG4gICAgKiBAY29uc3RydWN0b3JcbiAgICAjIyNcbiAgICBjb25zdHJ1Y3RvcjogLT5cbiAgICAgICAgc3VwZXJcbiAgICAgICAgXG4gICAgICAgIEBjb2x1bW4gPSAwXG4gICAgICAgIEByb3cgPSAwXG5cbiAgICBzaXplVG9GaXQ6IC0+XG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIFVwZGF0ZXMgYSBzcGVjaWZpZWQgY29udHJvbC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHVwZGF0ZUNvbnRyb2xcbiAgICAqIEBwcm90ZWN0ZWRcbiAgICAqIEBwYXJhbSB7Z3MuT2JqZWN0X0Jhc2V9IGNvbnRyb2wgVGhlIGNvbnRyb2wgdG8gdXBkYXRlXG4gICAgIyMjIFxuICAgIHVwZGF0ZUNvbnRyb2w6IChjb250cm9sKSAtPlxuICAgICAgICBzdXBlclxuICAgICAgICBcbiAgICAgICAgY2VsbFNwYWNpbmcgPSBAb2JqZWN0LmNlbGxTcGFjaW5nXG4gICAgICAgIHJlY3QgPSBAb2JqZWN0LmRzdFJlY3RcbiAgICAgICAgXG4gICAgICAgIGNvbnRyb2wucGFyZW50ID0gQG9iamVjdFxuICAgICAgICBjb250cm9sLmRzdFJlY3QueCA9IGNlbGxTcGFjaW5nWzBdICsgQGNvbHVtbiAqIChjb250cm9sLmRzdFJlY3Qud2lkdGgrY2VsbFNwYWNpbmdbMl0pXG4gICAgICAgIGNvbnRyb2wuZHN0UmVjdC55ID0gY2VsbFNwYWNpbmdbMV0gKyBAcm93ICogKGNvbnRyb2wuZHN0UmVjdC5oZWlnaHQrY2VsbFNwYWNpbmdbM10pXG4gICAgICAgIGlmIGNvbnRyb2wubmVlZHNVcGRhdGVcbiAgICAgICAgICAgIGNvbnRyb2wubmVlZHNVcGRhdGUgPSBub1xuICAgICAgICAgICAgY29udHJvbC51cGRhdGUoKVxuICAgICAgIFxuICAgICAgICBpZiBAb2JqZWN0LnNpemVUb0ZpdFxuICAgICAgICAgICAgcmVjdC53aWR0aCA9IE1hdGgubWF4KGNvbnRyb2wuZHN0UmVjdC54ICsgY29udHJvbC5kc3RSZWN0LndpZHRoICsgY2VsbFNwYWNpbmdbMl0sIHJlY3Qud2lkdGggfHwgMClcbiAgICAgICAgICAgIHJlY3QuaGVpZ2h0ID0gTWF0aC5tYXgoY29udHJvbC5kc3RSZWN0LnkgKyBjb250cm9sLmRzdFJlY3QuaGVpZ2h0ICsgY2VsbFNwYWNpbmdbM10sIHJlY3QuaGVpZ2h0IHx8IDApXG4gICAgICAgICAgIFxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIHRoZSBncmlkLWxheW91dC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHVwZGF0ZVxuICAgICMjI1xuICAgIHVwZGF0ZTogLT5cbiAgICAgICAgQHVwZGF0ZU9yaWdpbigpXG4gICAgICAgIFxuICAgICAgICBjZWxsU3BhY2luZyA9IEBvYmplY3QuY2VsbFNwYWNpbmdcbiAgICAgICAgcm93cyA9IEBvYmplY3Qucm93c1xuICAgICAgICBjb2x1bW5zID0gQG9iamVjdC5jb2x1bW5zXG4gICAgICAgIEByb3cgPSAwXG4gICAgICAgIEBjb2x1bW4gPSAwXG4gICAgICAgIG9mZnNldCA9IChAb2JqZWN0Lmxpc3RPZmZzZXR8fDApICogKHJvd3MgKiBjb2x1bW5zKSBcbiAgICAgICAgY291bnQgPSBNYXRoLm1pbihAb2JqZWN0LnN1Yk9iamVjdHMubGVuZ3RoLCByb3dzICogY29sdW1ucyArIG9mZnNldClcbiAgICAgICAgcmVjdCA9IEBvYmplY3QuZHN0UmVjdFxuICAgICAgICBcbiAgICAgICAgZm9yIGkgaW4gW29mZnNldC4uLmNvdW50XVxuICAgICAgICAgICAgY29udHJvbCA9IEBvYmplY3Quc3ViT2JqZWN0c1tpXVxuICAgICAgICAgICAgY29udHJvbC5pbmRleCA9IGlcblxuICAgICAgICAgICAgQHVwZGF0ZUNvbnRyb2woY29udHJvbClcblxuICAgICAgICAgICAgQGNvbHVtbisrXG4gICAgICAgICAgICBpZiBAY29sdW1uID49IGNvbHVtbnNcbiAgICAgICAgICAgICAgICBAY29sdW1uID0gMFxuICAgICAgICAgICAgICAgIEByb3crK1xuXG4gICAgICAgICAgICBpZiBAcm93ID49IHJvd3NcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICBcbiAgICAgICAgaWYgQG9iamVjdC5jbGlwUmVjdD9cbiAgICAgICAgICAgIEBvYmplY3QuY2xpcFJlY3Quc2V0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCkgICAgICBcbiAgICAgICAgXG5ncy5Db21wb25lbnRfR3JpZExheW91dEJlaGF2aW9yID0gQ29tcG9uZW50X0dyaWRMYXlvdXRCZWhhdmlvciJdfQ==\n//# sourceURL=Component_GridLayoutBehavior_90.js"
},
"summary": [
"name",
"type",
"order"
]
}
|