PDA

Просмотр полной версии : сбой координат при ресайзе с noScale


vaKROLme
17.06.2010, 13:40
Привет. Делаю видеоплеер.
На событие onResize повешан код, который растягивает мувик по ширине сцены и ставит на нулевую коодинату.
при display.state="fullscreen" Stage.width=1240, мумик растягивается, но остаётся в старом месте - почти в середине экрана. А должен быть у левой границы.

если мониторить _xmouse и _ymouse то видно, что в правом нижнем углу экрана координаты положительные и меньше Stage.width. А в левом верхнем углу обе координаты отрицательные.

Несколько человек уже воткнули в исходник, но так и не поняли, в чём дело. Всё должно работать

Может, кто-то с таким сталкивался?

rainbowrussia
17.06.2010, 14:02
Ну так выкладывайте, тоже "воткнем". :)

vaKROLme
17.06.2010, 17:10
исходник. без видео, без всего. только сорцы.

vaKROLme
18.06.2010, 17:02
никто не поможет? готов дать денег.

fljot
18.06.2010, 17:18
исходник не смотрел, но судя по симптомам просто надо добавить Stage.align = "topLeft"

rainbowrussia
18.06.2010, 17:26
К сожалению открыть не смог, но присоединяюсь, в исходнике должно быть:

Stage.scaleMode = 'noScale';
Stage.align = 'LT';

Для отключения масштабирования и привязки к левому-верхнему углу.

vaKROLme
18.06.2010, 19:19
сейчас проверил, в исходнике это и так есть. Это слишком просто было бы. Вот собственно
System.useCodepage = true;
Stage.align = "LT"
Stage.scaleMode = "noScale";
Stage.displayState == "normal"
var myListener:Object = new Object();
myListener.onResize = function() {
video_mc._height = Stage.height;
video_mc._width = video_mc._height*1.3;
p._x =0;
};
Stage.addListener(myListener);
всё равно мувик Р, в котором панель перемотки, прокрутки и всего остального остаётся в середине. Просто кроме всего прочего там прикручен класс который ловит выход курсора за сцену. и получается что панелька пропадает когда курсор выходит за пределы старого формата, не-полноэкранного.
Ещё идеи? Может в настройках публикации что-то? Хотя что там может быть?
Может конфликт какой-то? Уже просрочил дедлайн, но не могу понять причину.

rainbowrussia
18.06.2010, 20:56
Если панель перемотки внизу, то:

p._x = 0;
p._y = Stage.height - p._height;


Если есть возможность, сохраните в формате CS3, посмотрю что там с _xmouse. У какого объекта его мониторите? У _root?
Плюс проверьте на другом компьютере, чтобы исключить возможные глюки.
Если есть где-то выложенное - киньте ссылку посмотреть.

vaKROLme
18.06.2010, 21:13
к сожалению выложить некуда, но на локалке видео должно проигрываться.
исходники и всё остальное вот тут
http://dl.************/u/212060/playerCS3.rar

rainbowrussia
18.06.2010, 21:35
Если сроки горят то по влево можно прижать так:

p._x = -(Stage.width - p._width)/2 + 20;


Если нужно его разместить внизу по-центру, то вот код:

p._x = 10;
p._y = Stage.height - (Stage.height - 360)/2 - 45;


У вас подключен скрипт StageBounds.as в котором методично изменяется Stage.align на null. Если хотите переделать все под Stage.align = "TL" то можете найти в этом файле строку StageBounds.watchStageAlign = true; и закоментировать. Но проще просто учесть этот факт.

vaKROLme
18.06.2010, 21:51
rainbowrussia, спасибо большое. но всё ещё актуально найти баг.

панель ещё будет растягиваться по ширине экрана по всем законам резины.
на первое время, конечно, так можно поступить.
но хотелось бы понять почему это не работает если должно.

за нахождение причины обещаю 5 WMZ на пиво.
ибо действительно засада с этой фигнёй получилась, надо разрулить.

rainbowrussia
18.06.2010, 22:07
У вас подключен скрипт StageBounds.as в котором методично изменяется Stage.align на null. Если хотите переделать все под Stage.align = "TL" то можете найти в этом файле строку StageBounds.watchStageAlign = true; и закоментировать. Но проще просто учесть этот факт.

vaKROLme
19.06.2010, 03:11
спасибо огромное, закомментил строку, всё поправилось.
гляньте в приват.