PDA

Просмотр полной версии : Проблемы с height для спрайтов или шейпов


in4core
18.08.2010, 22:03
sp = new Shape();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,stage.stageHeight/2,stage.stageWidth,2);
sp.graphics.endFill();
sp.height = 12;
addChild(sp);

исчезает со сцены!!!

если убрать sp.height = 12; то все норм. Но мне нужно по ходу динамически менять height . В чем проблема?!

Dezar
18.08.2010, 23:02
забавный глюк)
или может и не глюк,а код не верный.
в любом случае могу только предложить делать addChild в какои-нибудь мувик и менять размеры мувика.что работает.

in4core
18.08.2010, 23:18
Код верный. Интересна зависимость, нашел. Что при изменении height почему то меняется y . Причем со странной зависимостью. Вот полный пример кода

sp = new Shape();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,stage.stageHeight/2,stage.stageWidth,2);
sp.graphics.endFill();
addChild(sp);

setTimeout(openSlot,500);

private function openSlot():void {
sp.height = 10;
sp.y = -800;

}
Ради интереса, при таком взаимодействии наш шейп остается на том же y что и был изначально ( тоесть stage.stageHeight/2). Но стоит не изменить y шейп улетает фиг знает куда, тоесть понятно что он не пропадает, а выставляет свою координату. Хотя при трейсе все равно покаже 0,0 )) И че это за фигня ваще ??!!

Dezar
18.08.2010, 23:21
это мистика флэша))она всегда была есть и будет есть))
по сабжу...
О_о

dimarik
18.08.2010, 23:36
забавно.

in4core
18.08.2010, 23:47
Посмеемся дальше.
Открываю новый проект. Пишу прям на кадре. создаю шейп задаю коррдинаты видсы и хейтсы. Тестирую - все ок! НАДОЖЕ!!! беру создаю класс. пишу в нем все тоже самое что и в кадре писал - ФИГУ вам опять глюки ))). Запускаю еще раз кадр, потом еще раз.... Весь от злости изнемогая.... Снова загружаю через класс - ОПА! все нормально!!!..... и как тут жить?! ))) Причем даю слово что не мой косяк, тоесть код я не менял.... ни разу.... но с 100 раза как грится заработало...

dimarik
18.08.2010, 23:56
Наверняка есть зависимость.

Psycho Tiger
19.08.2010, 00:02
Не вникал, почему исчезает, прокоментирую это:
Что при изменении height почему то меняется y .
Отрисовывая вот так:
sp.graphics.drawRect(0,stage.stageHeight/2,stage.stageWidth,2);
Мы на самом деле рисуем в точке с y=stage.stageHeight/2, но не помещаем этот квадрат туда.
То есть в итоге у нас получается большой мувик, высотой stage.stageHeight/2+2.
Сжимая его, конечно, сжимается не этот отрисованый квадратик, а весь большой мувик.
Наверно, надо написать вот так:
sp = new Shape();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,0,stage.stageWidth,2);
sp.graphics.endFill();
sp.height = 12;
sp.y=stage.stageHeight/2;
addChild(sp)

in4core
19.08.2010, 00:03
Зависимость найдена методом тыка. На будущее поколениям. Если собираемся менять какие либо атрибуты, нужно создавать фигуру в 0-0 всегда. А только потом настраивать как угодно!....жесть вот уж не знал

Добавлено через 1 минуту
Psycho Tiger спасибо, сам дошел до этого. Гдеж ты раньше был)) убил часы на зависимость!