16/04/2008

PROFPicker

Опубликовано в: Эксперименты — Тэги: , — Nicolas Prof @ 21:54

Вот решил обзавестись функциональным color picker’ом. Вариант Adobe меня не устраивает как размером, так и возможностями. Пока столкнулся с проблемой – устанавливать стартовый/дефолтный цвет, т.е. выставить указатели.
Попробовать в работе:

Просмотр

11/04/2008

Tweener vs. TweenLite

Опубликовано в: Эксперименты — Тэги: — Nicolas Prof @ 20:45

Провел я истерический клик тест (многие пользователи любят так ловить баги на флеш сайтах) для двух разных движков Твинов. Проверял над управлением обычного свойства DisplayObject, а также с ColorTransform. Tweener показал отличную устойчивость к такого рода клик тесту, что в нем мне всегда и нравилось, совершенно не думаешь запущен ли сейчас твин. TweenLite же провалил этот тест на управлении цветом. При чем результат не сильно отличается даже при использовании приема как для Tweener.
При нажатии на кнопки выполняется следующий код:
[as]
/*
* EVENTS
*/
private function testTweenerColor(e : MouseEvent) : void {
Tweener.addTween(_boxTweener,{_color_rb:255,_color_gb:255,_color_bb:255});
Tweener.addTween(_boxTweener,{_color_rb:0,_color_gb:0,_color_bb:0,time:2,transition:”easeOutSine”});
}

private function testTweenLiteColor(e : MouseEvent) : void {

TweenLite.to(_cm, 0, {redOffset:255, greenOffset:255, blueOffset:255});
TweenLite.to(_cm, 2, {redOffset:0, greenOffset:0, blueOffset:0});
}

private function testTweenLite(e : MouseEvent) : void {
_boxTweenLite.alpha = 0;
TweenLite.to(_boxTweenLite, 2, {alpha:1});
}

private function testTweener(e : MouseEvent) : void {
_boxTweener.alpha = 0;
Tweener.addTween(_boxTweener, {alpha:1, time:2, transition:”easeOutSine”});
}
[/as]

Результат:
Смотреть в действии

Баг в Flash IDE с Loader (Progress, close())

Опубликовано в: Эксперименты — Тэги: — Nicolas Prof @ 09:07

Столкнулся с очень интересным багом. Если во время загрузки контента, не дав загрузится до конца, начать грузить другой контент тем же лоадером, получим в итоге как в анекдоте 165% или даже больше процентов загрузки. Так же при загрузке контента, попытки закрыть поток методом close тоже будут не удачны.
Можете попробовать сами.
[as]
private var _loader : Loader;
private var _info : TextField;

public function LoadMore() {
//INIT
var offset:uint = 20;
var btn1:Sprite = button(“test1″);
var btn2:Sprite = button(“test2″);
btn1.x = btn2.x = offset;
btn1.y = offset;
btn2.y = 3 * offset;
_loader = new Loader();
_loader.x = 150;
_loader.y = offset;
_info = new TextField();
_info.selectable = true;
_info.autoSize = TextFieldAutoSize.LEFT;
_info.x = offset;
_info.y = 350;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

//DISPLAY LIST
addChild(_loader);
addChild(btn1);
addChild(btn2);
addChild(_info);

//LISTENERS
btn1.addEventListener(MouseEvent.CLICK, onClick);
btn2.addEventListener(MouseEvent.CLICK, onClick);

//ACTIONS
}

private function button(str : String) : Sprite {
var btn : Sprite = new Sprite();
btn.graphics.lineStyle(0, 0×333333,0.4,true);
btn.graphics.beginFill(0xF6F6F7);
btn.graphics.drawRoundRect(0, 0, 100, 20, 10, 10);
btn.graphics.endFill();
btn.name = str;
var tf : TextField = new TextField();
tf.selectable = false;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = str;
tf.x = (btn.width – tf.width) * 0.5;
tf.y =( btn.height – tf.height) * 0.5;

btn.mouseChildren = false;
btn.buttonMode = true;
btn.addChild(tf);

return btn;
}

private function loadIMG(path : String) : void {
var url : URLRequest = new URLRequest(path + “.jpg”);
/*try{
_loader.unload();
trace(“UNLOAD”);
}catch (e : TypeError) {
//nothing
}
try{
_loader.close();
trace(“CLOSE STREAM”);
}catch (e : TypeError) {
//nothing
}catch (e : Error){
//nothing
}*/
_loader.load(url);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
}

/*
* EVENTS
*/
private function imageLoading(e : ProgressEvent) : void {
trace(“LOADED:”,e.bytesLoaded,” TOTAL:”, e.bytesTotal);
_info.text = “LOADED:”+e.bytesLoaded+” TOTAL:”+ e.bytesTotal;
}

private function imageLoaded(e : Event) : void {

}
private function onClick(e : MouseEvent) : void {
loadIMG(e.currentTarget.name);
}
[/as]

Как это работает в WEB :
[flash /f/loadMore.swf h=400]

08/04/2008

Простой Tooltip

Опубликовано в: Эксперименты — Тэги: — Nicolas Prof @ 21:05

Вот представляю общественности очень простой и незамысловатый tooltip. Все что нужно это сделать Embed шрифта(Используется эффект с альфой, можно сделать очень легкий тултип если отказаться от каких либо эффектов.). В моем примере это Tahoma. А также очень простое использование, вызывать методы Show(“Текст тултипа”) и hide();
[as]
public function DemoToolTip() {
//INIT
_tip = new ToolTip();
_tip.initiate();
_tip.mouseChildren = false;
_tip.mouseEnabled = false;

var info:Array = new Array(["great bOx", Math.random() * stage.stageWidth*0.5, Math.random() * stage.stageHeight*0.5],
["super bOx", (Math.random()+1) * stage.stageWidth*0.5, Math.random() * stage.stageHeight*0.5],
["some bOx", Math.random() * stage.stageWidth*0.5, (Math.random()+1) * stage.stageHeight*0.5],
["awesome bOx", (Math.random()+1) * stage.stageWidth*0.5, (Math.random()+1) * stage.stageHeight*0.5]
);

for(var i:uint; i<4; i++){
var box:Sprite = box(info[i][0]);
box.x = info[i][1];
box.y = info[i][2];
box.rotation = Math.random() * 360;
box.addEventListener(MouseEvent.MOUSE_OVER, showTip);
box.addEventListener(MouseEvent.MOUSE_OUT, hideTip);
addChild(box);
}

//DISPLAY LIST
addChild(_tip);
}
[/as]

В результате должно получиться, что то вроде этого:

[flash /f/demoToolTip.swf]

 

Menu:
Twitter Updates:
    Archive:
    Control:
    Flash & Flex friends: