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

Узанть URL страницы на котором запущена флэшка

var url:String = ExternalInterface.call ( "function() { return window.document.location.href }" );

четверг, 27 марта 2008 г.

пятница, 29 февраля 2008 г.

DataGrid cellRenerer для столбца

Поместить в первый кадр (На сцену перетащить компонет DataGrid обозвать dg, в либу поместить Button)
var sampleItem1:Object = { Name:"John Alpha",     Number:"555-123-0101", Email:"jalpha@fictitious.com" };
var sampleItem2:Object = { Name:"Mary Bravo", Number:"555-372-3322", Email:"mbravo@fictitious.com" };
var sampleItem3:Object = { Name:"Trevor Gamma", Number:"555-485-1212", Email:"tgamma@fictitious.com" };
var sampleItem4:Object = { Name:"Susan Delta", Number:"555-987-3434", Email:"sdelta@fictitious.com" };

//dg.setStyle('cellRenderer', MyRenderer);

dg.columns = ["Name", "Number", "Email"];

dg.addItem(sampleItem1);
dg.addItem(sampleItem2);
dg.addItem(sampleItem3);
dg.addItem(sampleItem4);
dg.addColumn("NewCol");
dg.getColumnAt(0).cellRenderer=MyRenderer;
dg.getColumnAt(1).cellRenderer=MyRenderer2;

MyRenderer.as:
package
{
import fl.controls.LabelButton;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import fl.containers.BaseScrollPane;

public class MyRenderer extends LabelButton implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;

public function MyRenderer() {
}

public function set listData(newListData:ListData):void {
_listData = newListData;
label = "Random: " + _listData.label;
drawRandomColor();
}

private function drawRandomColor():void {
graphics.beginFill(Math.random()*0xFFFFFF);
graphics.drawRect(0,0,20,20);
graphics.endFill();
}

public function get listData():ListData {
return _listData;
}

public function set data(newData:Object):void {
_data = newData;
}

public function get data():Object {
return _data;
}
}
}

MyRenderer2.as:
package
{
import fl.controls.LabelButton;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import fl.containers.BaseScrollPane;
import flash.display.Sprite;
import flash.events.MouseEvent;

public class MyRenderer2 extends Sprite implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;

public function MyRenderer2() {
this.graphics.lineStyle(1);
this.graphics.drawCircle(10, 10, 10);

this.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}

private function mouseClickHandler(e:MouseEvent):void {
trace("cell clicked");
}

public function set listData(newListData:ListData):void {
_listData = newListData;
//label = "Random: " + _listData.label;
//drawRandomColor();
}

private function drawRandomColor():void {
graphics.beginFill(Math.random()*0xFFFFFF);
graphics.drawRect(0,0,20,20);
graphics.endFill();
}

public function get listData():ListData {
return _listData;
}

public function set data(newData:Object):void {
_data = newData;
}

public function get data():Object {
return _data;
}
public function get selected():Boolean {
return true;
}
public function set selected(value:Boolean):void {

}
public function setMouseState(state:String):void {
if (state == "over") { trace ("mouse Over") } ;
}
public function setSize(width:Number, height:Number):void {
this.width = width;
this.height = height;
}

public function setStyle(style:String, value:Object):void {

}

}
}

вторник, 26 февраля 2008 г.

Передача параметра EventHandler-у (хак от __etc)

Очень помог прием (хак) с функцией delegate

function resizeHandler(event:Event, ...rest):void {
trace(event, rest);
}
var delegate:Function = function(scope:Object, func:Function, ...rest):Function {
return function(...args):void {
func.apply(scope, args.concat(rest));
}
}
super.stage.addEventListener(Event.RESIZE, delegate(this, this.resizeHandler, 1, 2, 3));

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

Клик по вложенному мувику

Взято с форума, на заметку:

Есть MovieClip1, на нем событие MouseClick1
в этом MovieClip1 есть MovieClip2 и на нем тоже обработчик клика - MouseClick2. Когда нажимаем на MovieClip2 выполняются оба метода MouseClick1 и MouseClick2.
Как избежать? Хочу чтобы обрабатывался только MouseClick2.
Спасибо!

private function mouseClick1 (e:MouseEvent):void {
if (e.eventPhase == EventPhase.AT_TARGET) {
//
}
}

четверг, 14 февраля 2008 г.

TextField - концентратор багов

Очень утомляет и вызывает крайнюю степень раздражения недоделаность TextField-а. Наверное за его разработку отвечали индусы-двоешники. Индусы которые еще ничего, делали что посерьезнее. А двоешникам дали TextField.

Когда getCharIndexAtPoint(x, y) попадает на перенос строки ("\n"), то возвращает черти что (4294967295).