From Flashden: “As more and more developers turn to ActionScript 3, more and more AS3 frameworks appear to be popping up to assist the Flash community. Frameworks are basically reliable libraries of code that you can use to rapidly deploy a project while also streamlining common tasks. Think of them as a way to help develop and glue together the different components of a software project.”

Here you will see 15 AS3 Frameworks to inpire you and your next projects, making more rapidly and more efficient the job. Read it.

Link: 15 awesome actionscript 3 frameworks to inspire your next project

Hi again, i update my scrollbar AS3 Class, named scrollbase, and today i post it for download, it’s really ease to work and so smaller than past version, only 1.5 kb.

The Features:
• Small file size
• Ease effect (or not) when move content
• Click the scroll background to move
•  Full customizable
• Scroll dragger with dynamic size
• All in one line

Download the Scrollbase sample and independent class (1487)

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

To use it you can write only two lines, so easy. The first line is the import and the second line is the scrollbase constructor, you need only put inside the constructor basicaly four movieclips, like show the sequence: content movieclip, mask of the content movieclip, the dragger movieclip and last movieclip is the background of the dragger, where the dragger will slide. Show the sample code bellow:

import com.dLibs.utils.scrollbase;
var sb:scrollbase = new scrollbase(conteudo,mascara,dragger,background,5,30);

This code show that ‘conteudo’ is the content movieclip and will be mask for ‘mascara’. ‘dragger’ is the movieclip that you click and move to see the rest of the content and move this movieclip upper of  ’background’ movieclip. So easy, but there we have some more arguments.

The fiveth argument is the Ease speed, you can change for more or less ease effect, by default the ease uint is 1 (one). The sixth argument is the bottom padding, you can put a number in pixels to show after the content movieclip, so much good for full background scrollbar, by default this padding is 0 (zero).

When you need you can verify if the scrollbase is necessary using the public function verifyHeight(). You can change the content of the moviclip and verify if content movieclip have the height propertie bigger than your mask. Usage:

import com.dLibs.utils.scrollbase;
var sb:scrollbase = new scrollbase(conteudo,mascara,dragger,background,5,30);
sb.verifyHeight();

You can download and change if you need. Try it!

Download the Scrollbase sample and independent class (1487)

Creative Commons License
Scrollbase by Scrollbar for AS3 is licensed under a Creative Commons Attribution 3.0 United States License.
Based on a work at code.google.com.

26 July ‘09 /EDIT —————————–

I’m working in a new version of scrollbase and as soon as possible i will post here the classe code and samples, now im working with a temp class named scrollbasic that i made to resolve the problem that @sonia said in comment. You can download the scrollbasic with link bellow and as so simple to use like scrollbase:

import com.dLibs.utils.scrollbasic;
var nsc:scrollbasic = new scrollbasic(DataRecord.getDocumentClass, conteudo, mascara, sdragger, sbground);

Need set the main document class, you can create one static class to set and get it, and set the movieclips as content clip, mask clip, dragger clip and scrollbar background. Probabily i will post the new version of scrollbase 31 July ‘09.

Thanks for all and sorry for the error.
: )

Download: Scrollbasic - Temporary Scrollbar Class (352)

Hi again, now i will show an update of the post Drag large images inside de box. Now the class dragIt have the option to use zoom in and out the content of the box.

Well, the primary function of  the class that is drag the content inside the mask box continue the same, and you can see how work into the post: Drag large images inside de box. For the new feature you need re-download the class using the SVN address or download the sample on final of the this post.

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

So, i added a simple public function for this class to add the zoom in and zoom out movieclip into the dragIt object, named addZoom, and work so simple like show bellow:

1
2
3
4
var drag:dragIt = new dragIt();
drag.drag(content,maskImage,true);
drag.addZoom(more,less);
addChild(drag);

Its really simple, the line 3 you will set the instance name of the zoom in and zoom out moviclip and when you click in one of these clips the content movieclip will resize more or less depending the button that you clicked.

Other thing added into the dragIt class is the possibility to resize the image on start the class. If you see the line 2 of the code sample and compare with the same line in Drag large images inside de box post will see that the ultimate argument is true, by default this is set false but if you want load the new content and resize it for the width and height proportion only put the true as you latest argument.

Any questions comment the post and download the sample to test it.

Download: Drag image with zoom (383)

Create one simple gallery can take a time that you havent. Well, a simple solution that i create was gallLoader Class, one simple gallery that load thumbs, position thumbs in lines and load large image. Simple to use:

gallloaderpic

Have two arrows in right and left side of thumb container, these arrow will move container to view all other images using one more class named slideClip. Now you need only import and create these class objects like code bellow:

import com.dLibs.slider.slideClip;
import com.dLibs.photos.gallLoader;
 
var minData:Array = ["galeria/001/001.jpg", ...];
var maxData:Array = ["galeria/001/g001.jpg", ...];
 
var gallPict:gallLoader;
gallPict = new gallLoader(minData,maxData,gClip.bigImage,gClip.gImages,"gallThumb",4,2,gClip.LoadQuadAnim);
 
var galSlider:slideClip;
galSlider = new slideClip(gClip.gImages, gClip.gMask, gClip.gNext, gClip.gPrev);

Well, minData and maxData is an Array with thum and large images location.  We import slideClip and gallLoader classes, the first will make slider with container and other classe will create the gallery.

First create gallPict link and gallLoader object, and this new gallLoader object need receive in order: thumb array, large images array, MovieClip instance of large image, container instance, class of the thumb clip in library, padding or distance of thumb clips, number of lines that will separated thumbs and loader instance. Uffa ehehhe so many instances but the result is so many speedly.

Too need create slideClip object and set the clip instances: container clip instance, mask intance ( mask of container ), next and prev clip instance. Using click event will move and show all container clip with your thumbs. See the Flash simple gallery in action here:

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

Bellow the slideClip and gallLoader classes to view and save.

slideClip.as

package com.dLibs.slider
{
 
	import flash.display.*;
	import flash.events.*;
	import gs.TweenLite;
 
	public class slideClip
	{
 
		private var _contClip:MovieClip;
		private var _maskClip:MovieClip;
		private var _nextClip:MovieClip;
		private var _prevClip:MovieClip;
		private var _maxWidth:Number;
		private var _actWidth:Number;
 
		public function slideClip(contClip:MovieClip, maskClip:MovieClip, nextClip:MovieClip, prevClip:MovieClip)
		{
			/*
				To use this class
				var galSlider:slideClip = new slideClip(clip_Images, clip_Mask, clip_Next, clip_Prev);
				Clips that ll be slided, clip that mask the first, button to Next and to ultimate to Prev
			*/
 
			_contClip = contClip;
			_maskClip = maskClip;
			_nextClip = nextClip;
			_prevClip = prevClip;
 
			_nextClip.buttonMode = true;
			_prevClip.buttonMode = true;
 
			_maxWidth = _maskClip.width;
			_actWidth = _maskClip.x;
 
			slideInit();
		}
 
		private function verifyWidth():void
		{
			if ( _contClip.width <= _maxWidth ) _nextClip.visible = _prevClip.visible = false;
		}
 
		private function slideInit():void
		{
			_nextClip.addEventListener(MouseEvent.CLICK, showNext);
			_prevClip.addEventListener(MouseEvent.CLICK, showPrev);
 
			verifyWidth();
		}
 
		private function showNext(e:MouseEvent):void
		{
			if ( int(_actWidth) > int((_maskClip.x + _maxWidth ) - _contClip.width)  )
			{
				TweenLite.to(_contClip,.9, {x : _actWidth - _maxWidth});
				_actWidth = _actWidth - _maxWidth;
			}
		}
 
		private function showPrev(e:MouseEvent):void
		{
			if ( int(_actWidth) < int(_maskClip.x) )
			{
				TweenLite.to(_contClip,.9, {x : _actWidth + _maxWidth});
				_actWidth = _actWidth + _maxWidth;
			}
		}
	}
}

gallLoader.as

package com.dLibs.photos
{
 
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
	import flash.net.*;
	import gs.TweenLite;
 
	public class gallLoader
	{
		/* @ Variables	 				____________________________________________________*/
 
		private var _minData		:Array;
		private var _maxData		:Array;
		private var _thmBox		:Array;
		private var _bigPict		:MovieClip;
		private var _smallPict		:MovieClip;
		private var _thmClip		:MovieClip;
		private var _thmMovie		:MovieClip;
		private var _bigMovie		:MovieClip;
		private var _loaderClip		:MovieClip;
		private var _thumbClass		:String;
		private var _loaderThumb	:Loader;
		private var _loaderBig		:Loader;
		private var _i			:uint;
		private var _thumbPadding	:uint;
		private var _thumbLines		:uint;
		private var _thumbLineY		:uint;
		private var _thumbLineX		:uint;
 
		/* @ Constructor 				____________________________________________________*/
 
		public function gallLoader(minData:Array,maxData:Array,bigPicture:MovieClip,smallPictures:MovieClip,thumbClass:String,thumbPadding:uint=0, thumbLines:uint=1,loaderClip:MovieClip=null):void
		{
			_minData 		= minData;
			_maxData 		= maxData;
			_bigPict 		= bigPicture;
			_smallPict 		= smallPictures;
			_thumbClass 	= thumbClass;
			_thumbPadding 	= thumbPadding;
			_thumbLines		= thumbLines;
			_loaderClip		= loaderClip;
 
			_thmBox = new Array();
 
			initGall();
		};
 
		/* @ init Function 				____________________________________________________*/
 
		private function initGall():void
		{
			if ( _loaderClip != null ) _loaderClip.visible = false;
 
			for ( _i = 0; _i < _minData.length; _i++ )
			{
				_loaderThumb 	= new Loader();
				_loaderThumb.x 	= _thumbPadding;
				_loaderThumb.y 	= _thumbPadding;
				_loaderThumb.load(new URLRequest(_minData[_i]));
				trace(_minData[_i] , _i);
 
				_thmClip 	= new ( getDefinitionByName(_thumbClass) as Class )();
				_thmClip.addChild(_loaderThumb);
 
				_thmMovie 		= new MovieClip();
				_thmMovie.x 	= ( _thmClip.width + 5 ) * _thumbLineX;
				_thmMovie.y		= ( _thmClip.height + 5 ) * _thumbLineY;
				_thmMovie.id 	= _i;
				_thmMovie.buttonMode = true;
				_thmMovie.addEventListener(MouseEvent.CLICK, viewPicture);
				_thmBox.push(_thmMovie);
				_thmMovie.addChild(_thmClip);
 
				_smallPict.addChild(_thmMovie);
 
				if ( _thumbLineY + 1 < _thumbLines )
				{
					_thumbLineY++;
				} else {
					_thumbLineY = 0;
					_thumbLineX++;
				}
			};
			_thmBox[0].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
		};
 
		/* @ init Function 				____________________________________________________*/
 
		private function viewPicture(e:MouseEvent):void
		{
			_loaderBig = new Loader();
			_loaderBig.load(new URLRequest(_maxData[e.currentTarget.id]));
			_loaderBig.contentLoaderInfo.addEventListener(Event.COMPLETE, showLoadedBig);
			_loaderBig.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showLoaderBig);
			trace(_maxData[e.currentTarget.id] , e.currentTarget.id);
 
			if ( _bigPict.numChildren > 1 ) _bigPict.removeChildAt(1);
		};
 
		private function showLoaderBig(e:ProgressEvent):void
		{
			if ( _loaderClip != null ) _loaderClip.visible = true;
		};
 
		private function showLoadedBig(e:Event):void
		{
			if ( _loaderClip != null ) _loaderClip.visible = false;
			_bigMovie 		= new MovieClip();
			_bigMovie.alpha = 0;
			_bigMovie.addChild(_loaderBig);
			_bigPict.addChild(_bigMovie);
 
			TweenLite.to(_bigMovie,.4,{ alpha : 1 });
		};
 
		/* @ End		 				____________________________________________________*/
 
	};
};

You can download the classes direct in repository: 
http://asdatalibs.googlecode.com/svn/trunk/

Any questions comment it. Thanks.
XD

Dica de site e filme.

September 23rd, 2008

Olá,  meu nome é Raphael

Estou invadindo a página para um post sobre web e cinema , trabalho na mesma empresa que o autor do Des84 e escrevo também em http://www.mercadobinario.blogspot.com/.

CHRYSALIS
Filme de ficção científica, que se passa em Paris no ano de 2020. Um futuro próximo, uma tecnologia estranha e um filme que nada parece ser o que é.
Vale o ticket.:)
-
O site do filme
http://www.chrysalis-lefilm.com/
-
Site bem elaborado oferece muito conteúdo do filme: podcast, trailers para psp, um analytics com dados do usuário e seu comportamento no site, imagens do storyboard,  links para comunidades em redes sociais e os padrões de páginas de cinema como: walpapers, trailers, casting….
Tudo isto dividido em níveis de acesso para simular um sistema de arquivos confidenciais.
Vale a visita.:)

Introduzindo asDataLibs

September 23rd, 2008

Olá, estou aqui novamente escrevendo um pouco mais sobre Actionscript 3 para iniciantes e intermediários. Antes de mais nada preciso explicar o que é o tal “asDataLibs”, que mesmo com um nome meio estranho, nada mais é que uma biblioteca ou coleção de bibliotecas, classes AS3, em Actionscript 3 que tem a intenção de facilitar para o programador o modo com que ele recebe, trata e disponibiliza os dados usados nas aplicações em Flash (AS3).

Acredito que a forma mais complicada mas a mais completa de se fazer uma transição do AS2 para AS3 é começando entender e criar Classes, essas que uma vez criadas, e bem criadas, resolvem um enorme problema de retrabalhos que se tinha facilmente na versão anterior da linguagem, mesmo que nessa anterior também fosse possivel criação das classes mas não era tão utilizada como agora.

O “asDataLibs” pode ser encontrado no endereço: http://code.google.com/p/asdatalibs

Ainda em fase de criação, as classes no dominio asDataLibs do Google, listado acima, somente seram publicadas no SVN depois de testadas e funcionando corretamente e seram colocados exemplos dentro da pasta samples no proprio SVN e no Wiki do Google Code.

A primeira classe criada e que vamos falar agora é a openFile (com.dLibs) essa que tem a finalidade de carregar arquivos externos para dentro da sua aplicação como imagens e animações em formato SWF. É realmente uma classe bem simples mas muito completa no quisito carregamento porque através dela se pode receber a porcentagem de carregamento diretamente em uma função de Loader que o proprio desenvolvedor criara de acordo com sua necessidade. Para iniciar a utilização da classe precisa-se inicialmente importar o pacote como segue abaixo:

import com.dLibs.openFile;

Depois disso, como se trata de uma classe estatica e por isso não precisa se criar objetos como acontece no Tweener por exemplo, então precisa-se somente chamar a classe a sua função estatica para ser executada como mostrado a seguir:

openFile.addItem(mc:MovieClip, file:String, Loader:Function, Timer:uint, transit:String);

Aparentemente muito complexa mais os campos requeridos para o carregamento são somente os três primeiros que são:

mc : Movie Clip onde será carregado o arquivo externo.
file: Arquivo a ser carregado, endereço relativo ao arquivo swf.
loaderText: que é o nome da função.

Para ver o loader funcionando basta criar uma função dentro do seu pacote de acesso ou dentro do arquivo FLA com o nome colocado quando se chama a classe e ele receberá o valor do percentual carregado abaixo mostrado:

import com.dLibs.openFile;
openFile.addItem(clip_mc, "files/image.jpg",loaderImages);
function loaderImages(porcentagem:uint):void
{
   myTextField.text = String(porcentagem);
} 

No exemplo acima a classe openFile carrega o arquivo “image.jpg” dentro do diretório “files” e o coloca dentro do movie clip nomeado de “clip_mc”, durante o carregamento desse arquivo o campo de texto nomeado de “myTextField” receberá os valores numerais convertidos para String da porcentagem carregada do arquivo, muito simples.

Assim os outros dois tipos de argumentos da função são responsáveis pela velocidade do fade final do arquivo recebido e do tipo de transição sera feita pelo fade, os dois correspondentes a classe Tweener, que é incluida dentro da classe openFile.

Próximos posts falaram de outras classes existentes e outras que ainda estão em construção para serem disponivilizadaso no SVN: http://asdatalibs.googlecode.com/svn/trunk/

2 Fast 2 Furious for games

September 16th, 2008

Depois de alguns bons dias quase que atoa voltei a dar uma olhada em alguns games e programas na net, hoje encontrei um programa muito legal que tem a inteção de melhorar o desempenho da máquina para jogos.

“A primeira coisa a fazer é uma cópia de segurança de suas configurações atuais, para isto, clique no botão Save State. O programa irá criar no diretório em que está instalado um arquivo com a extensão DAT. Esse será seu “backup”, para qualquer eventualidade você ter como voltar tudo em seu computador a como era antes.”

O programa não faz milagres, claro, se nao melhorar muita coisa por favor compre novos hardwares, so isso vai melhorar.

Link: Game XP

Bee: WordPress based AIR

September 8th, 2008

Olá a todos, hoje lendo a documentação do AIR da Adobe encontrei nos diversos links um em especial com alguns programas feitos em Flash e Flex para AIR, mas dentre os inúmeros aplicativos inúteis encontrei o Bee.

Bee é um App feito para atualizar o blog do WordPress com suporte a imagens (também ia Flickr) com editor em HTML muito poderoso, completo. Seleção de categorias, salvar como Draft, publicar e muito mais. Preview abaixo:

Bee Preview

Sou um usuário, a muito tempo, do Writer do pacote Live mas em questão de praticidade e facilidade de instalação e utilização acabo por me decidir em trocar, pelo menos por enquanto, para o Bee. Ainda nao da suporte a criar categorias diretamente do programa assim como o Writer mas isso, pelo menos para mim, é o de menos.

Link: Exemplos de projetos em AIR

Link: Download do Bee

Browser do Google: Chrome

September 2nd, 2008

Post rápido, downloa do navegador do Google que promete usabilidade e performance muito melhores que os navegadores atuais. Eu como "Googlemaniaco" creio no Oraculo e o download está sendo feito.

Download em: http://www.google.com/chrome/

AMFPHP e AS3 para noobs

August 11th, 2008

Depois de passar um tempo longe dessa caceta de blog ( caceta no sentido carinhoso da palavra, ou se preferirem no feminio que não posso escrever ) tive dando uma estudada em AS3 bem a fundo e comecei a procurar um AMF (Action Message Format) para fazer comunicação do Flash com banco de dados e assim alimentar as aplicações de forma mais rápida sem aquele taaaaaaaanto de arquivos PHP para acessar banco e outros mil para enviar dados ao Flash.

Entre as formas pagas (Flash Media Server) e o grátis eu fiquei com o FREE claro. O danado em questão é um programa, gateway, que interpreta as classes colocadas dentro dele e retorna de forma fácil os dados para a aplicação, executando até coisas simples como um form de e-mail.

AMFPHP é um programa feito em PHP, como está no próprio nome, coisa idiota, com uma interface gráfica (Browser) criada no Flex onde podemos executar as aplicações sem necessariamente rodar a aplicação em Flash. Como eu já havia dito é grátis, basta acessar o site do AMFPHP e clicar em download par abaixar a última versão do programa, basta copiar para o server dentro do diretorio que preferir – por default:

www.dominio.com/amfphp

Para visualizar a parte gráfica, o browser das aplicações, basta acessar o endereço:

www.dominio.com/amfphp/browser

Segue imagem (preview) do Browser abaixo:

amfphp_one

Um exemplo simples para utilizar no AMFPHP é um form de email, onde nesse criamos um arquivo em PHP separado chamado de Email.php dentro dele criaremos a classe Email com a função _send como veremos no código abaixo:

<?php

class Email
{
        /**
        * Esse serviço ira enviar um formulario
        * @retorno true ou false se enviado ou nao
        */
        function send($to, $subject, $message){
                return mail($to, $subject, $message);
        }
}

?>

Com essa classe dentro do servidor dentro da pasta do AMFPHP, aperto dentro do Browser o botão de Refresh para visualizar a nova Classe “Email” criada essa pode ser executada dentro do proprio Browser somente preenchendo os campos ou do Flash que segue o source abaixo. Bem fácil de usar e não instala nada no servidor, vale a pena testar.

amfphp_two

Source em Flash (fla): Download

Espero que gostem e até breve.