Апрель 16, 2008
Вот решил обзавестись функциональным 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
Провел я истерический клик тест (многие пользователи любят так ловить баги на флеш сайтах) для двух разных движков Твинов. Проверял над управлением обычного свойства DisplayObject, а также с ColorTransform. Tweener показал отличную устойчивость к такого рода клик тесту, что в нем мне всегда и нравилось, совершенно не думаешь запущен ли сейчас твин. TweenLite же провалил этот тест на управлении цветом. При чем результат не сильно отличается даже при использовании приема как для Tweener.
При нажатии на кнопки выполняется следующий код:
Actionscript:
/*
* 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" } ) ;
}
Результат:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player .)
Столкнулся с очень интересным багом. Если во время загрузки контента, не дав загрузится до конца, начать грузить другой контент тем же лоадером, получим в итоге как в анекдоте 165% или даже больше процентов загрузки. Так же при загрузке контента, попытки закрыть поток методом close тоже будут не удачны.
Можете попробовать сами.
Actionscript:
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 , 0x333333,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 ) ;
}
Как это работает в 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 . Все что нужно это сделать Embed шрифта(Используется эффект с альфой, можно сделать очень легкий тултип если отказаться от каких либо эффектов.). В моем примере это Tahoma. А также очень простое использование, вызывать методы Show("Текст тултипа") и hide();
Actionscript:
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) ;
}
В результате должно получиться, что то вроде этого:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player .)