вторник, 29 июля 2008 г.

Как наложить цвет на изображение при помощи фильтра

На сцене лежит клип "item".
На него накладывается цвет, к примеру: "0xCC9933FF".


package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.filters.ColorMatrixFilter;

public class ColorMatrixFilterExample extends MovieClip {

public function ColorMatrixFilterExample() {
this.applyColor(0xCC9933FF, this.getChildByName("item"));
}

private function applyFilter(child:DisplayObject, matrix:Array):void {
var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var filters:Array = new Array();
filters.push(filter);
child.filters = filters;
}

private function applyColor(rgb:uint,renderer:DisplayObject):void {
var matrix:Array = new Array();

matrix = matrix.concat([((rgb>>24)&0xFF)/0xFF, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, ((rgb>>16)&0xFF)/0xFF, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, ((rgb>>8)&0xFF)/0xFF, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, ((rgb)&0xFF)/0xFF, 0]); // alpha
applyFilter(renderer, matrix);
}
}
}

четверг, 29 мая 2008 г.

Организация метаданных класса

Информация для статьи Хороший стиль Flex-программирования. Структура файла.

//--------------------------------------
// Events
//--------------------------------------
/
**
* ASDoc comment.
*/
[Event
/**
* ASDoc comment.
*/
[Event
//--------------------------------------
// Styles
//--------------------------------------
/**
* ASDoc comment.
*/
[Style
/**
* ASDoc comment.
*/
[Style]
//--------------------------------------
// Effects
//--------------------------------------
/**
* ASDoc comment.
*/
[Effect
/**
* ASDoc comment.
*/
[Effect]
//--------------------------------------
// Excluded APIs
//--------------------------------------
[Exclude(name="horizontalAlign", kind="style")]
[Exclude(name="verticalAlign", kind="style")]
//--------------------------------------
// Other metadata
//--------------------------------------
[DefaultBindingProperty(source="text", destination="text")]
[IconFile("Text.png")]

среда, 28 мая 2008 г.

Блок Copyright

Информация для статьи Хороший стиль Flex-программирования. Структура файла.


////////////////////////////////////////////////////////////////////////////////
//
// ADOBE SYSTEMS INCORPORATED
// Copyright 2008 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file
// in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////

среда, 14 мая 2008 г.

Стиль без скина. MXML

.styleName {
skin: ClassReference(null);
}

HandCursor над кнопкой. MXML

<mx:Button label="Button" useHandCursor="true" buttonMode="true" mouseChildren="false" id="button_name" />

четверг, 24 апреля 2008 г.

"Ручной" cacheAsBitmap. AS2

Код для статьи "Ручной" cacheAsBitmap. AS2.

Пример использования:
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.ColorTransform;

var bmp_data:BitmapData = new BitmapData(this._width,this._height,false,0);
bmp_data.draw(this,new Matrix(),new ColorTransform(),"normal",new Rectangle(0,0,this._width,this._height),true);

var name:String;
for (name in this)
if (this[name] instanceof MovieClip) {
var movie:MovieClip = this[name];
movie.unloadMovie();
delete this[name];
}

this._height-=0.5;
this.attachBitmap(bmp_data,1,"auto", true);

понедельник, 18 февраля 2008 г.

Псевдо-генератор случайных чисел. AS3

package org.racer.utils
{
/**
* Псевдо-генератор случайных чисел.
* Получает гамму случайных чисел, и по запросу, выдает каждый последующий элемент гаммы
* Класс представляет только статические методы и не позволяет себя инстанцировать.
*
* @author Evgeny [Racer] Simonov
* @version 1.0
*/
public class TGammaRandom {

/**
* При отсутствии гаммы случайных чисел, random возвращает -1
*/
static public const RETURN_ERROR_MODE:int=0;

/**
* При отсутствии гаммы случайных чисел, random возвращает Math.random();
*/
static public const RETURN_RANDOM_MODE:int=1;

/**
* При отсутствии гаммы случайных чисел, random генерирует исключение
*/
static public const THROW_EXCEPTION_MODE:int=2;

/**
* @private
* Текущий элемент
*/
static private var __current:Number=0;

/**
* @private
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static private var __strict_mode:int=THROW_EXCEPTION_MODE;

/**
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static public function set strict_mode(value:int):void {
__strict_mode=value;
}

/**
* @private
*/
static public function get strict_mode():int {
return __strict_mode;
}

/**
* @private
* Гамма случайных чисел
*/
static private var __gamma:Array=null;

/**
* Гамма случайных чисел
*/
static public function set gamma(value:Array):void {
__gamma=value;
}

/**
* @private
*/
static public function get gamma():Array {
return __gamma;
}

/**
* Конструктор. Никогда не вызывается.
*/
public function TGammaRandom() {
throw new Error("Класс TGammaRandom инстанцировать нельзя. Все методы класса являются статическими.");
}

/**
* Возвращает значение из гаммы случайных чисел.
*
* @return Случайное значение
*/
static public function random():Number {
if ((__gamma==null)||(__gamma.length==0)) {
switch (__strict_mode) {
case RETURN_ERROR_MODE:
return -1;
break;
case RETURN_RANDOM_MODE:
return Math.random();
break;
case THROW_EXCEPTION_MODE:
throw new Error("Гамма случайных чисел не установлена, либо пуста. Невозможно возвратить случайное число.");
break;
}
}
if (__current>=__gamma.length) __current=0;
return __gamma[__current++];
}
}
}