![]() |
InternetExplorer неправ. позиционирование после обновл. страницы
Вложений: 2
Здравствуйте
Вот какого рода проблема Есть прокручивалка картинок ( МОРДОЛЕНТА :) ) http://divisionby0.org/web_Portfolio/walejo/ala_mamba/ почти все параметры вынесены из флэшки и можно выставить размер картинок, длину флэшки, высоту, количество показываемых картинок и.т.д. При наведении на картинку она немного увеличивается - так что по высоте флэшка должна быть чуть выше чем картинка. При обновлении страницы в Опере и FF все работает нормально (хоть миллион раз обновить страницу) - картинки подгружаемые в контейнер (MovieClip) позиционируются по Y там где нужно. А вот в ИЕ при обновлении страницы - почти наполовину своей высоты ниже позиционируются картинки загруженные, а может быть это контейнер(MovieClip) позиционируется неправильно (если обновлять страницу и дальше, то "опускания" картинок больше не происходит). То есть, при обновлении страницы в ИЕ картинки как бы "падают" ниже, а при первой загрузке - правильно позиционируются. Флэшка встроена swfObject-ом Вот код вставки флэшки в страницу: PHP код:
во флэшке: Код AS1/AS2:
|
Была похожая проблема...
Код не совсем ясен. Вот это как понимать? Код AS1/AS2:
Покажите побольше. Stage тут не нужен, он не при чем. PersonObj в аттаче как меняется? |
Цитата:
Код дополнил - взгляните будьте добры |
Сделайте высоту сцены побольше (повыше), сделайте рамочку для PersonsHolder и для индивидуальных контейнеров, а то все белое. Тогда можно будет локализовать проявление проблемы и думать дальше.
Понять можно будет - съезжает ли сам общий холдер, или ниже делаются контейнеры с картинками или даже сами картинки внутри индивидуальных контейнеров, хотя это вряд ли. Добавлено через 6 минут Все таки что-то тут может быть с самой Stage. Вот тут у вас задается положение общего холдера: Код AS1/AS2:
|
Спасибо за советы - помучаю флэшку с рамочками
Попробую жестко НО проблема эта в ИЕ выявляется не при первой загрузке а при обновлении страницы - при первой загрузке все позиционируется правильно |
Цитата:
|
Цитата:
|
Если у вас страница php:
Код:
var so = new SWFObject("sqlGet2.swf<?php echo('?'.rand(1, 200) )?>", "mymovie", .....Добавлено через 2 минуты Но вообще, конечно, кэш кэшем, проблемы быть не должно такой. |
ясненько спасибо
буду экспериментировать как сделаю опишу как я этот досадный глюк поборол |
Да, проблема проявляется, когда IE после рефреша берет ролик из кэша. Если открыть страницу, загрузить флешку, потом зайти в "настройки обозревателя", нажать "удалить файлы" и обновить страницу, все в порядке.
Можно форсировать некэширование, но правильнее все же разобраться, почему так ведет себя флеш. |
при первой загрузке ИЕ считает что Stage.height=97 а при второй из кэша считает что Stage.height=0 - бред какой-то :)
Пришлось вводить переменную в код вставки so.addVariable("StageHeight", "97") и относительно ее значения высчитывать местоположение холдера по Y Код AS1/AS2:
заработало корректно в ИЕ Спасибо Вам "mooncar" за "перст указующий" :) P.S. А вот интересно - почему собственно Stage.height у загруженной из кэша ИЕ флэшки равен нулю ? может просто это свет с луны не туда упал ? .... |
Обычно нулю равны размеры свежесозданных объектов (мувики) сразу после создания.
Когда закачиваем в них содержание извне, любые действия с участием размеров выполняются по готовности. Готовность - это все пишется внутри onLadInit, например. А вот как быть, когда идет аттач из библиотеки, как определить готовность наполнения для дальнейших вычислений в этом случае , так и не разобрался. проблема моя как раз с этим была связана. Видимо, тут нужен какой-то слушатель, проверяющие отличность размера от нуля и говорящий - все, можно уже дальше вычислять. |
хм ну хорошо
а к чему же тогда var so = new SWFObject("sqlGet2.swf", "mymovie", "858", "97", "8", "#ffffff") - это же явные размеры ? (но тут глубоко разбираться нужно как работает swfObject для разных брузеров я так думаю) в таком случае, как вы говорите и исключая (к примеру) то, что размеры приаттаченных мувиков фиксированы, (в моем случае) - может быть, имеет смысл положить один из мувиков сразу на стэйдж где-нибудь вне зоны видимости, и флэшка уже будет знать, как минимум, свою высоту (точнее, высоту стэйджа) а чтобы уж точно быть уверенным что все или в первый кадр, допустим, положить этот мувик, а во втором все уже считать и позиционировать. |
Попробуйте аттачить в качестве контейнера мувик с размещенным внутри другим, например, прозрачным графическим символом (_alpha = 0).
|
Цитата:
то есть Код AS1/AS2:
|
Код AS1/AS2:
Можно попробовать отложить позиционирование на один или несколько кадров; Код AS1/AS2:
|
'dimarik', простите, это в тему ТЕМЫ или в ответ господину 'mooncar' ?
Если в тему ТЕМЫ :) то я аттачу мувики определенного размера состоящие из 2х мувиков - холдера и холста (назову их так). После аттача гружу в холст (приаттаченного мувика) картинку и уменьшаю ее программно чтобы она уместилась в холсте. Когда загрузилась картинка - аттачу следующий в мордоленту. У приаттаченного мувика есть высота отличная от нуля (равная высоте холдера плюс расстояние для увеличения при наведении) Ну а в конечном итоге - к чему тогда SwfObject размеры по ширине и высоте ? только чтобы зарезервировать на странице для себя место ? То есть лучше не использовать Stage.height если нет на стейдже ничего изначально ? |
Цитата:
|
ясненько - спасибо
Буду иметь это ввиду и учитывать эти факты в последующих разработках. Всем спасибо. |
IE - самый гнусный и тупой браузер современности!!!
Эта проблемма лечиться так в AS3 - в конструкторе Document-класса пишем: Код AS3:
|
Цитата:
|
dimarik - Ссылку с большим пафосом я тоже могу положить.
Такое "обычное" поведение, почему-то только у браузера IE. |
|
dimarik - В контексте вопроса звучит браузер IE... В контексте ответов звучит слово ПРОБЛЕММА! Это и ежу ясно, что данная ПРОБЛЕММА проявляется ВОЗМОЖНО и благодаяря иному поведению ActiveX (я думаю, вы и так поняли что я имел ввиду, но просто, по совершенно непонятным мне причинам, вы решили выглядить умно).
Вы, наверное, не знаете, что особенность работы этого ActiveX также зависит реализации самого браузера. IE (в отличие от других браузеров) изначально инициализирует переменные некоторых объектов в 0 (в том числе ширины и высоты), а потом инициирует событие RESIZE, чтобы выставить настоящие (а в случае таблиц и резиновой верстки еще и пересчитаные) ширины и высоты некоторым объектам (и даже в JavaScript его можно отловить). В других браузерах RESIZE срабатывает только при непосредственном изменении размеров окна, а окончательные ширины и высоты выставляются до, так называемого, запуска плагинов (я написал плагины - чтобы вы не придрались, так как, по большей части, другие браузеры используют плагинную систему в отличии от компонентной ActiveX). Так что, вообще говоря, нельзя утверждать, что именно в данном случае является первичным в контексте данной ПРОБЛЕММЫ - особенность реализации браузера IE или особенность реализации ActiveX с учетом особенностей реализации IE. А что вы имеете в виду под "обычным поведением ActiveX" (поведением по отношению к чему, из сути вашего ответа - абсолютно не ясно)? Короче, не надо нам здесь пердеть в воздух, поправлять орфографию, пытаясь сказать что-то умное. |
Ну, хозяин - барин. Пральна писать "ни о чем". =) Учите русский язык.
|
Цитата:
Очень возможно, что я пишу на вашем родном языке гораздо грамотнее, чем вы смогли бы на моем! Да и между прочим, правильно писать "Правильно", а не "Пральна"! Кто бы поправлял, ёмаё :) |
Не берите в голову =) Ну, не русский Вы, так случилось. Но беситься-то зачем? Сказали же Вам, что ActiveX так себя ведет и баста!
|
У меня так же была проблема с ИЕ, пришлось писать хак для него, вешать ЕнтренФрейм, и ждать когда размеры высоты и ширины стейджа будут больше нуля, тогда уже делать какие-то расстановки и манипуляции с объекйтами, которые отталкивались от размера сцены.
|
Вы описали всего лишь workaround
|
Просто про слово "хак" я читал одно из определений, что это:
Цитата:
Т.е. слово "хак" уместно для такой ситуации. |
Хак это хак. фрик - это фрик, а Вы сделали workэраунд. Ну не более того. Сэ ля ви.
|
Molecula не обращайте внимания, шизофрения - не лечится! :taunt:
Дубовый лоб непробиваем! |
| Часовой пояс GMT +4, время: 07:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.