PDA

Просмотр полной версии : NO_SCALE - Cropping might occur if the player window is smaller than the content


kia007
01.03.2010, 17:01
Всем привет!
Мне надо создать флэшку которая по высоте(927) больше чем высота экрана монитора(900). Причем у меня 900 у кого то и 600 может быть.
Посмотрел на параметр NO_SCALE
и оказывается что флэшка обрезается по высоте.
NO_SCALE
Specifies that the size of the Flash application be fixed, so that it remains unchanged even as the size of the player window changes. Cropping might occur if the player window is smaller than the content.

Как тут быть? как скомпилировать так чтобы флэшка забила на то какого размера получается плеер в окне?:)
Работаю в FD и CS3.

Спасибо!)

ps_spectre
01.03.2010, 17:11
Как тут быть? как скомпилировать так чтобы флэшка забила на то какого размера получается плеер в окне?

Это надо чтобы не флешка забила, а программист забил на кривизну такого подхода.
Пиши так, чтобы не зависеть от размера Stage.

kia007
01.03.2010, 17:16
что значит не зависеть от размера stage?
Например мне надо длиную анимированную полоску побокам на сайте сделать, с фиксированным размером но больше чем высота экрана.как быть?

Сейчас получается что флэшка снизу обрезается как в плеере так и в браузере
параметры выставляю такие:
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP;

ps_spectre
01.03.2010, 17:24
kia007, я вот в упор понять не могу, зачем делать больше, чем видимая область?
Делай полоску в размер экрана. При правильном подходе, полоска не должна зависеть от конкретной высоты или ширины.

stage.stageWidth
stage.stageHeight
так же, если NO_SCALE
можно подписаться на событие RESIZE.

kia007
01.03.2010, 17:31
ну не можете понять и не надо...от вас этого и не требуется. У меня есть конкретное дизайнерское решение. Сверху карта снизу чат.
Все очень удобно и проблема в том что флэшка тупо обрезается.
И проблема имеено в том что компилятор смотрит мой размер экрана и кропит флэшку на выходе.
Пришлось переключиться в более высокое разрешение, чтобы нормально скомпилировать флэшку, но это же гадко!
Неужели нет нормально решения? Просто сказать компилятору не кропь фллэху и все?

ps_spectre
01.03.2010, 17:56
kia007, если размер флешки (видимая область), явно будет меньше чем размер контента, причем, если надо сохранить размер контента, то нужно реализовать возможность прокрутки содержимого. (добавить для этого ползунки например (использовать готовые компоненты флеш), или обойтись обычным startDrag()-stopDrag(), или просто руками реализовать прокрутку, тут зависит от предпочтений).

(компилятор ничего не обрезает)

Добавлено через 6 минут
очень простой пример для иллюстрации:
Main.as

package
{
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.events.*;

[SWF(width=600,height=400,frameRate=60,backgroundColor=0x880000)]
public class Main extends Sprite
{
private var s:Sprite = new Sprite();
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event=null):void
{
if (hasEventListener(Event.ADDED_TO_STAGE))
removeEventListener(Event.ADDED_TO_STAGE, init)

stage.scaleMode = StageScaleMode.NO_SCALE;
s.x = 0;
s.y = 0;
s.graphics.beginFill(0x00ff00);
s.graphics.drawRect(0,0,1000, 1000);
s.graphics.beginFill(0x0000ff);
s.graphics.drawRect(0, 500, 1000, 500);
s.graphics.endFill();
s.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
s.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);

this.addChild(s);
}
private function handleMouseDown(event:Event):void {
s.startDrag();
}
private function handleMouseUp(event:Event):void {
s.stopDrag();
}
}
}

mxmlc Main.as -debug
flashplayer Main.swf