This commit is contained in:
2014-02-27 09:13:39 +04:00
parent dc69402ab5
commit 6d9b35abd6
7 changed files with 47 additions and 16 deletions

View File

@@ -38,5 +38,6 @@ class Root {
var content:DisplayObject = view.content; var content:DisplayObject = view.content;
view.width = content.stage.stageWidth; view.width = content.stage.stageWidth;
view.height = content.stage.stageHeight; view.height = content.stage.stageHeight;
//L.d("Screen", content.stage.stageWidth + "x" + content.stage.stageHeight);
} }
} }

View File

@@ -171,15 +171,15 @@ class TextView extends SpriteView implements ITextView<Sprite, TextField> {
} else { } else {
textField.x = switch (layoutHAlign) { textField.x = switch (layoutHAlign) {
case HAlign.NONE: 0; case HAlign.NONE: 0;
case HAlign.LEFT: 0; case HAlign.LEFT: paddings;
case HAlign.CENTER: (width - textField.width) / 2; case HAlign.CENTER: (width - textField.width) / 2;
case HAlign.RIGHT: width - textField.width; case HAlign.RIGHT: width - textField.width - paddings;
} }
textField.y = switch (layoutVAlign) { textField.y = switch (layoutVAlign) {
case VAlign.NONE: 0; case VAlign.NONE: 0;
case VAlign.TOP: 0; case VAlign.TOP: paddings;
case VAlign.MIDDLE: (height - textField.height) / 2; case VAlign.MIDDLE: (height - textField.height) / 2;
case VAlign.BOTTOM: height - textField.height; case VAlign.BOTTOM: height - textField.height - paddings;
} }
} }
} }

View File

@@ -1,5 +1,6 @@
package haxework.gui.skin; package haxework.gui.skin;
import haxework.gui.utils.BitmapUtil;
import haxework.gui.utils.DrawUtil; import haxework.gui.utils.DrawUtil;
import flash.geom.Rectangle; import flash.geom.Rectangle;
import flash.display.BitmapData; import flash.display.BitmapData;
@@ -21,8 +22,9 @@ class ButtonBitmapSkin implements ISkin<Sprite, ButtonView> implements ISize {
public var downImage(null, set):BitmapData; public var downImage(null, set):BitmapData;
private var images:Map<ButtonState, BitmapData>; private var images:Map<ButtonState, BitmapData>;
private var disable:BitmapData;
public function new(?image:BitmapData = null, ?fillType = null, ?color = -1) { public function new(?image:BitmapData = null, ?fillType:FillType = null, ?color = -1) {
images = new Map<ButtonState, BitmapData>(); images = new Map<ButtonState, BitmapData>();
if (image != null) { if (image != null) {
this.image = image; this.image = image;
@@ -35,9 +37,9 @@ class ButtonBitmapSkin implements ISkin<Sprite, ButtonView> implements ISize {
width = value.width; width = value.width;
height = value.height; height = value.height;
images.set(ButtonState.UP, value); images.set(ButtonState.UP, value);
images.set(ButtonState.DOWN, value); images.set(ButtonState.DOWN, BitmapUtil.multiply(value, 0.8));
images.set(ButtonState.OVER, value); images.set(ButtonState.OVER, BitmapUtil.multiply(value, 1.2));
//images.set(ButtonState.DISABLE, value); disable = BitmapUtil.grayscale(value, 0.2);
return value; return value;
} }
@@ -60,7 +62,7 @@ class ButtonBitmapSkin implements ISkin<Sprite, ButtonView> implements ISize {
public function draw(view:ButtonView):Void { public function draw(view:ButtonView):Void {
if (images == null) return; if (images == null) return;
var image:BitmapData = images.get(view.state); var image:BitmapData = view.disabled ? disable : images.get(view.state);
DrawUtil.draw(view.content.graphics, image, new Rectangle(0, 0, view.width, view.height), fillType, color); DrawUtil.draw(view.content.graphics, image, new Rectangle(0, 0, view.width, view.height), fillType, color);
} }

View File

@@ -0,0 +1,28 @@
package haxework.gui.utils;
import flash.geom.Point;
import flash.filters.ColorMatrixFilter;
import flash.geom.ColorTransform;
import flash.display.BitmapData;
class BitmapUtil {
public static function multiply(image:BitmapData, m:Float):BitmapData {
var ct:ColorTransform = new ColorTransform(m, m, m, 1.0, 0, 0, 0);
var out:BitmapData = image.clone();
out.colorTransform(out.rect, ct);
return out;
}
public static function grayscale(image:BitmapData, m:Float):BitmapData {
var matrix:Array<Float> = [];
matrix = matrix.concat([m, m, m, 0, 0]);
matrix = matrix.concat([m, m, m, 0, 0]);
matrix = matrix.concat([m, m, m, 0, 0]);
matrix = matrix.concat([0, 0, 0, 1, 0]);
var cmf:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var out:BitmapData = image.clone();
out.applyFilter(out, out.rect, new Point(0,0), cmf);
return out;
}
}

View File

@@ -5,7 +5,7 @@ import flash.geom.Rectangle;
import flash.display.BitmapData; import flash.display.BitmapData;
import flash.display.Graphics; import flash.display.Graphics;
enum FillType { @:fakeEnum(String) enum FillType {
NONE; NONE;
DEFAULT; DEFAULT;
COVER; COVER;

View File

@@ -43,19 +43,19 @@ class BaseMediaLoader<T> extends BaseLoader<T> {
override private function internalRequest(url:String):Void { override private function internalRequest(url:String):Void {
cockTimeout(); cockTimeout();
loader = buildLoader(); loader = buildLoader();
loader.load(new URLRequest(url), buildLoaderContext()); loader.load(new URLRequest(url), buildLoaderContext(false));
} }
override private function internalFromBytes(data:ByteArray):Void { override private function internalFromBytes(data:ByteArray):Void {
loader = buildLoader(); loader = buildLoader();
loader.loadBytes(data, buildLoaderContext()); loader.loadBytes(data, buildLoaderContext(true));
} }
private function buildLoaderContext():LoaderContext { private function buildLoaderContext(bytes:Bool):LoaderContext {
return switch (Security.sandboxType) { return switch (Security.sandboxType) {
case Security.REMOTE: case Security.REMOTE:
//null; //null;
new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain); bytes ? null : new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain);
case Security.APPLICATION: case Security.APPLICATION:
var loaderContext:LoaderContext = new LoaderContext(); var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true; loaderContext.allowLoadBytesCodeExecution = true;

View File

@@ -16,9 +16,9 @@ class UrlUtil {
return result; return result;
} }
public static function parseParamsDynamic(url:String):Dynamic { public static function parseParamsDynamic(url:String, ?delimiter:String = "?"):Dynamic {
var result:Dynamic = {} var result:Dynamic = {}
var tmp:String = url == null ? null : url.split("?")[1]; var tmp:String = url == null ? null : delimiter == "" ? url : url.split(delimiter)[1];
if (tmp != null) { if (tmp != null) {
var tmpArr:Array<String> = tmp.split("&"); var tmpArr:Array<String> = tmp.split("&");
for (item in tmpArr) { for (item in tmpArr) {