• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pouic

janela com resize

6 mensagens neste tópico

Boas pessoal alguém consegue dar umas dicas para criar algo como isto?

resizeyx9.gif

Um movie clip principal que tem a possibilidade de resize. Até ai tudo bem no problem... Agora o problema é mesmo dar ordens para os thumbnails dentro dele (criados dinamicamente) ajustarem-se ao seu comprimento...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yo!

se meteres esses thumbs dentro de um "main movieClip", e fizeres scale a esse "main movieClip", todos os thumbs partilharão das propriedades do "main movieClip" (alphas, x, y, scales...)

se tas em as2 será algo do genero:

mainMovieClip.attachMovie("thumb","thumb0",mainMovieClip.getNextHighestDepth());

...

se tas em as3 seria algo do genero:

mainMovieClip.addChild(thumb0)

...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok vou testar isso... Obrigado pela dica...

Já agora... estou em AS2 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, eu só sei AS3. Mas aqui vai, se precisares que comente o código, eu depois faço isso.

Podes ver a funcionar aqui: http://www.nelsonalexandre.eu/flash/dragger.html.

import flash.display.*;
import flash.events.MouseEvent;

var base:Sprite = new Sprite();
var baseMask:Sprite = new Sprite();
var pusher:Sprite= new Sprite();
var mover:Object;


var origin:uint = 50;
var baseSize:uint = 300;
var puhserSize:uint = 10;
var spacer:uint = 5;
var thumbSize:uint=60;
var nItems:uint = 10;
var nCol:uint;
var nRows:uint;


base = Rectangle (550,400,0x333333);
baseMask = Rectangle (baseSize,baseSize,0xff0000);
pusher = Rectangle (puhserSize,puhserSize,0x3d3d3d);
base.x = base.y =origin;
baseMask.x = baseMask.y =origin;
addChild(base);
addChild (baseMask);
base.mask = baseMask;
pusher.x=pusher.y=340;
addChild(pusher);
for (var i:int = 0; i < nItems; i++) {
var thumb:Sprite = new Sprite();
thumb = Rectangle(thumbSize,thumbSize, 0x636368);
thumb.name = "thumb"+i;
thumb.visible = false;
base.addChild(thumb);
}

pusher.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
base.addEventListener(Event.ENTER_FRAME, redraw);
pusher.addEventListener(MouseEvent.MOUSE_UP, onUp);

function onDown(event:MouseEvent):void {
pusher.startDrag();
//redraw();
}

function redraw(event:Event=null):void {
baseMask.width = (pusher.x+10)-50;
baseMask.height = (pusher.y+10)-50;
var actCol = Math.floor(baseMask.width /(spacer+thumbSize));
nRows = 0;
nCol = 0;
for (var i:int = 0; i < nItems; i++) {
	mover = base.getChildByName("thumb"+i);
	mover.visible = true;
	mover.x = nCol*(spacer+thumbSize);
	mover.y = nRows*(spacer+thumbSize);
	nCol++;
	if (nCol>=actCol){
		nCol=0;
		nRows++;
	}
}
}

function onUp(event:MouseEvent):void {
pusher.stopDrag();
}

function Rectangle(rWidth:Number = 10, rHeight:Number = 10, color:uint = 0xEEEEEE):Sprite {
var quad:Sprite = new Sprite();
quad.graphics.beginFill(color);
quad.graphics.drawRect(0,0,rWidth,rHeight);
quad.graphics.endFill();
return quad;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso :) vou ver se traduzo isso para as2 :) e depois faço o post disso :)

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O movieclip que contem os thumbnails é o stage ou um movieclip com essa funcionalidade?

Se for o stage basta associar uma função "reposicionarThumbs"  ao onResize deste.

Se guardares as referências das thumbs num array quando as crias, com um ciclo é fácil reposicionar.

Qq coisa como:

var thumbRefs:Array = [thumb1,thumb2,thumb3,(...)];
var WSPACE:Number = 10;
var HSPACE:Number = 10;
function reposicionarThumbs():Void
{
       var pos:Object =  {x:WSPACE, y:HSPACE)
       for(var i=0; i<thumbRefs.length; i++)
       {
              thumbRefs[i]._x = pos.x;
              thumbRefs[i]._y = pos.y;
              //Calcula a posicao do proximo
              if((pos.x + thumbRefs[i+1]._width + WSPACE) > thumbRefs[i]._width)
              {
                  pos.x = WSPACE;
                  pos.y += HSPACE;
               }else{
                  pos.x+= WSPACE;
               }
       }
}

Se for um movieclip que tem a funcionalidade de poder alterar o tamanho, chamas a função de reposicionamento no local onde esse movieclip é redimensionado. Provavelmente onMouseMove.

Obviamente tendo atenção ao scope onde a função corre.

Nota: A função acima é apenas um exemplo escrito de memória, mas acho que dá para teres a ideia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora