Май 20, 2008

Разработка PROFGUI. Конструктор градиента. 0.1

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

Продолжаю работать над GUI ориентированных больше на графику и эффекты. Вот хочу показать следующие наработки. Конструктор градиента. Практически как в Фотошопе (отличный прототип как ни крути :) ). Еще дорабатываю возможность «отрывать» ползунок, а также вызов PROFPicker’а при двойной клике на ползунок. Демо:

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Апрель 16, 2008

PROFPicker

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

Вот решил обзавестись функциональным color picker’ом. Вариант Adobe меня не устраивает как размером, так и возможностями. Пока столкнулся с проблемой - устанавливать стартовый/дефолтный цвет, т.е. выставить указатели.
Попробовать в работе:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Апрель 11, 2008

Tweener vs. TweenLite

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

Провел я истерический клик тест (многие пользователи любят так ловить баги на флеш сайтах) для двух разных движков Твинов. Проверял над управлением обычного свойства DisplayObject, а также с ColorTransform. Tweener показал отличную устойчивость к такого рода клик тесту, что в нем мне всегда и нравилось, совершенно не думаешь запущен ли сейчас твин. TweenLite же провалил этот тест на управлении цветом. При чем результат не сильно отличается даже при использовании приема как для Tweener.
При нажатии на кнопки выполняется следующий код:

Actionscript:
  1. /*
  2.          * EVENTS
  3.          */
  4.         private function testTweenerColor(e : MouseEvent) : void {
  5.             Tweener.addTween(_boxTweener,{_color_rb:255,_color_gb:255,_color_bb:255});
  6.             Tweener.addTween(_boxTweener,{_color_rb:0,_color_gb:0,_color_bb:0,time:2,transition:"easeOutSine"});
  7.         }
  8.  
  9.         private function testTweenLiteColor(e : MouseEvent) : void {
  10.  
  11.             TweenLite.to(_cm, 0, {redOffset:255, greenOffset:255, blueOffset:255});
  12.             TweenLite.to(_cm, 2, {redOffset:0, greenOffset:0, blueOffset:0});
  13.         }
  14.  
  15.         private function testTweenLite(e : MouseEvent) : void {
  16.             _boxTweenLite.alpha = 0;
  17.             TweenLite.to(_boxTweenLite, 2, {alpha:1});
  18.         }
  19.  
  20.         private function testTweener(e : MouseEvent) : void {
  21.             _boxTweener.alpha = 0;
  22.             Tweener.addTween(_boxTweener, {alpha:1, time:2, transition:"easeOutSine"});
  23.         }

Результат:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

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

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

Столкнулся с очень интересным багом. Если во время загрузки контента, не дав загрузится до конца, начать грузить другой контент тем же лоадером, получим в итоге как в анекдоте 165% или даже больше процентов загрузки. Так же при загрузке контента, попытки закрыть поток методом close тоже будут не удачны.
Можете попробовать сами.

Actionscript:
  1. private var _loader : Loader;
  2.         private var _info : TextField;
  3.  
  4.        
  5.        
  6.         public function LoadMore() {
  7.             //INIT
  8.             var offset:uint = 20;
  9.             var btn1:Sprite = button("test1");
  10.             var btn2:Sprite = button("test2");
  11.             btn1.x = btn2.x = offset;
  12.             btn1.y = offset;
  13.             btn2.y = 3 * offset;
  14.             _loader = new Loader();
  15.             _loader.x = 150;
  16.             _loader.y = offset;
  17.             _info = new TextField();
  18.             _info.selectable = true;
  19.             _info.autoSize = TextFieldAutoSize.LEFT;
  20.             _info.x = offset;
  21.             _info.y = 350;
  22.            
  23.             stage.scaleMode = StageScaleMode.NO_SCALE;
  24.             stage.align = StageAlign.TOP_LEFT;
  25.            
  26.             //DISPLAY LIST
  27.             addChild(_loader);
  28.             addChild(btn1);
  29.             addChild(btn2);
  30.             addChild(_info);
  31.            
  32.             //LISTENERS
  33.             btn1.addEventListener(MouseEvent.CLICK, onClick);
  34.             btn2.addEventListener(MouseEvent.CLICK, onClick);
  35.            
  36.             //ACTIONS
  37.         }
  38.        
  39.        
  40.  
  41.         private function button(str : String) : Sprite {
  42.             var btn : Sprite = new Sprite();
  43.             btn.graphics.lineStyle(0, 0x333333,0.4,true);
  44.             btn.graphics.beginFill(0xF6F6F7);
  45.             btn.graphics.drawRoundRect(0, 0, 100, 20, 10, 10);
  46.             btn.graphics.endFill();
  47.             btn.name = str;
  48.             var tf : TextField = new TextField();
  49.             tf.selectable = false;
  50.             tf.autoSize = TextFieldAutoSize.LEFT;
  51.             tf.text = str;
  52.             tf.x = (btn.width - tf.width) * 0.5;
  53.             tf.y =( btn.height - tf.height) * 0.5;
  54.            
  55.             btn.mouseChildren = false;
  56.             btn.buttonMode = true;
  57.             btn.addChild(tf);
  58.            
  59.             return btn;
  60.         }
  61.        
  62.         private function loadIMG(path : String) : void {
  63.             var url : URLRequest = new URLRequest(path + ".jpg");
  64.             /*try{
  65.                 _loader.unload();
  66.                 trace("UNLOAD");
  67.             }catch (e : TypeError) {
  68.                 //nothing
  69.             }
  70.             try{
  71.                 _loader.close();
  72.                 trace("CLOSE STREAM");
  73.             }catch (e : TypeError) {
  74.                 //nothing
  75.             }catch (e : Error){
  76.                 //nothing
  77.             }*/
  78.             _loader.load(url);
  79.             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
  80.             _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
  81.         }
  82.        
  83.         /*
  84.          * EVENTS
  85.          */
  86.         private function imageLoading(e : ProgressEvent) : void {
  87.             trace("LOADED:",e.bytesLoaded," TOTAL:", e.bytesTotal);
  88.             _info.text = "LOADED:"+e.bytesLoaded+" TOTAL:"+ e.bytesTotal;
  89.         }
  90.  
  91.         private function imageLoaded(e : Event) : void {
  92.            
  93.         }
  94.         private function onClick(e : MouseEvent) : void {
  95.             loadIMG(e.currentTarget.name);
  96.         }

Как это работает в WEB :
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Апрель 8, 2008

Простой Tooltip

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

Вот представляю общественности очень простой и незамысловатый tooltip. Все что нужно это сделать Embed шрифта(Используется эффект с альфой, можно сделать очень легкий тултип если отказаться от каких либо эффектов.). В моем примере это Tahoma. А также очень простое использование, вызывать методы Show("Текст тултипа") и hide();

Actionscript:
  1. public function DemoToolTip() {
  2.     //INIT
  3.     _tip = new ToolTip();
  4.     _tip.initiate();
  5.     _tip.mouseChildren = false;
  6.     _tip.mouseEnabled = false;
  7.  
  8.     var info:Array = new Array(["great bOx", Math.random() * stage.stageWidth*0.5, Math.random() * stage.stageHeight*0.5],
  9.                                ["super bOx", (Math.random()+1) * stage.stageWidth*0.5, Math.random() * stage.stageHeight*0.5],
  10.                                ["some bOx", Math.random() * stage.stageWidth*0.5, (Math.random()+1) * stage.stageHeight*0.5],
  11.                                ["awesome bOx", (Math.random()+1) * stage.stageWidth*0.5, (Math.random()+1) * stage.stageHeight*0.5]
  12.                                );
  13.  
  14.     for(var i:uint; i<4; i++){
  15.         var box:Sprite = box(info[i][0]);
  16.         box.x = info[i][1];
  17.         box.y = info[i][2];
  18.         box.rotation = Math.random() * 360;
  19.         box.addEventListener(MouseEvent.MOUSE_OVER, showTip);
  20.         box.addEventListener(MouseEvent.MOUSE_OUT, hideTip);
  21.         addChild(box);
  22.     }
  23.  
  24.     //DISPLAY LIST
  25.     addChild(_tip);
  26. }

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

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

« Предыдущие записиНовые записи »
 

Меню:
Архив:
Управление:
Flash&Flex знакомые: