четверг, 24 апреля 2008 г.
Узанть URL страницы на котором запущена флэшка
var url:String = ExternalInterface.call ( "function() { return window.document.location.href }" );
четверг, 27 марта 2008 г.
пятница, 29 февраля 2008 г.
DataGrid cellRenerer для столбца
Поместить в первый кадр (На сцену перетащить компонет DataGrid обозвать dg, в либу поместить Button)
MyRenderer.as:
MyRenderer2.as:
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.
Спасибо!
Есть MovieClip1, на нем событие MouseClick1
в этом MovieClip1 есть MovieClip2 и на нем тоже обработчик клика - MouseClick2. Когда нажимаем на MovieClip2 выполняются оба метода MouseClick1 и MouseClick2.
Как избежать? Хочу чтобы обрабатывался только MouseClick2.
Спасибо!
private function mouseClick1 (e:MouseEvent):void {
if (e.eventPhase == EventPhase.AT_TARGET) {
//
}
}
пятница, 15 февраля 2008 г.
четверг, 14 февраля 2008 г.
TextField - концентратор багов
Очень утомляет и вызывает крайнюю степень раздражения недоделаность TextField-а. Наверное за его разработку отвечали индусы-двоешники. Индусы которые еще ничего, делали что посерьезнее. А двоешникам дали TextField.
Когда getCharIndexAtPoint(x, y) попадает на перенос строки ("\n"), то возвращает черти что (4294967295).
Когда getCharIndexAtPoint(x, y) попадает на перенос строки ("\n"), то возвращает черти что (4294967295).
Подписаться на:
Сообщения (Atom)

