Апрель 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.         }

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

Баг в 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 :
[flash /f/loadMore.swf h=400]

Апрель 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. }

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

[flash /f/demoToolTip.swf]

Февраль 5, 2008

Scrolling + Blur

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

Давний эксперимент с созданием скроллинга, который бы менял свои габариты в зависимости количества контента, а также цяцька в виде блуринга текста при скроллинге.

[flash /f/news.swf]

Ноябрь 28, 2007

Рандомно

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

В одном из проектов понадобилось сделать вот такого рода шапку.

[flash /f/random.swf]

Главная задача была сделать действительно полный рандом, приближенный к макету. А также сделать возможность произвольно устанавливать размеры флеш плеера.

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

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