![]() |
|
||||||||||
|
|||||
|
[+4 16.10.08]
Регистрация: Sep 2002
Адрес: Киев
Сообщений: 140
|
Пытаюсь писать класс всплывающего окна на флеше. Окно должно содержать картинки и текст. Не знаю как сделать класс универсальным чтобы окно было резиновым. Посоветуйте как красиво разместить блоки картинок и текста. Знаю, что оконное API довольно изощренное (например Java 2D), надо бы чего-нибуть попроще - предусмотреть наличие нескольких блоков картинок и текста.
Пока что решил весь контент пихать в одно поле ввиде html. Вот заготовка: import flash.geom.*
class Popup extends MovieClip
{
var my_sp, decrID, incrID, title, my_txt, my_fmt, html_text, close;
function Popup()
{
super();
this._visible = false;
this._alpha = 0;
title = createEmptyMovieClip("title", this.getNextHighestDepth());
with(title)
{
//beginFill(0x0000FF,30);
colors = [0x0000FF,0x70E2FE ];
fillType = "linear";
alphas = [100,100 ];
ratios = [0, 0xFF];
spreadMethod = "pad";
interpolationMethod = "linearRGB";
focalPointRatio = 0.9;
matrix = new Matrix();
matrix.createGradientBox(400, 200);
beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);
moveTo(1,0);
lineTo(this._width,0);
lineTo(this._width,22);
lineTo(1,22);
endFill();
}
close = createEmptyMovieClip("close", getNextHighestDepth());
with(close)
{
beginFill(0x9D9D9D,50);
moveTo(this._width-22,2);
lineTo(this._width-2,2);
lineTo(this._width-2,20);
lineTo(this._width-22,20);
endFill();
lineStyle(2, 0x000000, 100, true, "none", "round", "miter", 1);
moveTo(this._width-18,6);
lineTo(this._width-6,18);
moveTo(this._width-18,18);
lineTo(this._width-6,6);
}
close.onPress = mx.utils.Delegate.create(this, onClose);
close.onRollOver = mx.utils.Delegate.create(this, function(){close.lineStyle(2, 0x00FF00, 100, true, "none", "round", "miter", 1);});
title.onPress = mx.utils.Delegate.create(this, _startDrag);
title.onRelease = mx.utils.Delegate.create(this, _stopDrag);
my_sp=createEmptyMovieClip("my_sp", this.getNextHighestDepth());
my_txt=this.my_sp.createTextField("my_txt", 2, 10, 40, this._width-20, this._height-50);
my_fmt = new TextFormat();
my_fmt.color = 0xFFFFFF;
my_fmt.underline = false;
my_fmt.font = "arial";
my_fmt.hscroll = true;
my_fmt.scroll = true;
my_txt.multiline = true;
my_txt.wordWrap = true;
my_txt.autoSize = "left";
my_txt.antiAliasType = "advanced";
my_txt.html = true;
my_txt.htmlText = html_text;
my_txt.backgroundColor=0xCCccCC;
my_txt.background=false;
my_txt.setTextFormat(my_fmt);
}
public function chAlpha()
{
//trace(this+":"+my_sp._alpha);
if(this._alpha >= 100)
{
clearInterval(decrID);
decrID = setInterval(this, "alphaDecr", 50);
}
if(this._alpha <= 0)
{
clearInterval(incrID);
incrID = setInterval(this, "alphaIncr", 50);
}
}
private function _startDrag()
{
this.startDrag();
}
private function _stopDrag()
{
this.stopDrag();
}
private function onClose()
{
chAlpha();
}
private function alphaDecr()
{
if(this._alpha<=0)
{
clearInterval(decrID);
this._visible=false;
} else
this._alpha-=5;
}
private function alphaIncr()
{
if(this._alpha>=100) clearInterval(incrID);
else this._alpha+=5;
}
}
attachMovie("PopUp", "pop", 1, {html_text:"<b>Hello</b><br>test!"}); Последний раз редактировалось trigger; 25.04.2008 в 16:06. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|