PDA

Просмотр полной версии : getVersion() и исполнение кода


sem1313
31.08.2006, 16:20
Модераторы, я честно не знал как озагалвить тему... потому как без понятия в чем трабла...
Кто нить знает или сталкивался с таким(?):

В первом кадре:

var FLVer:String = getVersion();

Plugin_mc._visible = false;
Launch_mc._visible = treu;
if(FLVer >= "WIN 8,0,00,0") {
gotoAndStop(2);
}
if(FLVer < "WIN 8,0,00,0") {
gotoAndStop(4);
}
stop();


И есть movieClip - Launch_mc, который находится с первого по 4-ый кадр. Т.е. он в любом случае должен быть на timeline...

Во втором кадре:

var xRes = System.capabilities.screenResolutionX;
var yRes = System.capabilities.screenResolutionY;

getURL ("javascript: var

win=window.open('My.htm','MyPage','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width="+xRes+",height="+yRes+",top=0,left=0');");
stop();


В данном случае код должен работать так - если версия плеера выше чем 8.00, то есть переход на второй кадр, в котором вызывается java - функция, которая открывает flash в поп-ап коне... И В ЛЮБОМ СЛУЧАЕ
мувик Launch_mc - должен быть показан в ПАРЕНТ окне из которого было вызванно открытие нового окна...
Но дело в том, что в IDE при тестировании мувик Launch_mc показывается всегда(!)... а если открываешь html, который содержить в себе эту swf, то новое окно открывается ВСЕГДА, а вот надпись(мувик) Launch_mc есть не всегда(!!)... При открытиии несколько раз подрояд html-файла... бывает таккая ситуация, что мувик Launch_mc - пропадает(!!!)... Здесь очень много точек, потому что я не в силах понять куда он
может деваться... Ведь мы его не перемещаем и даже alph'у и visible не меняем.....

Прошу, заметить, что в IDE все работает корректно(по крайней мере не встречал, что бы мувик Launch_mc был не видим), а вот в Explorer - байда какая то... то есть, то нет... И мой мозг отказывается понять в чем причина...

iNils
31.08.2006, 16:41
Сравнивать строки задача не благородная, почему не сделать так?
var FLVer:Number = Number (getVersion ().substr (4).split (",")[0]);
if (FLVer >= 8) {
trace ("больше или равно 8");
} else {
trace ("меньше 8");
}

etc
31.08.2006, 16:44
Лучше _level0.$version юзать, я думаю... Просто потому что getVersion() не было в пятёрке.

sem1313
31.08.2006, 17:29
iNils, хоть ты мне и поставил плюсик(можно поспорить за что), но все равно спаибо... Хоть я так и недогнал в чем разница - FLVer >= "WIN 8,0,00,0" и FLVer:Number = Number (getVersion ().substr (4).split (",")[0]) для Flash...

Но это работает(!)... По крайней мере 15 раз подряд запустил html, и launch_mc всегда был на месте...

Спасибо...

etc
31.08.2006, 17:40
Хоть я так и недогнал в чем разница - FLVer >= "WIN 8,0,00,0" и FLVer:Number = Number (getVersion ().substr (4).split (",")[0]) для Flash…
Такая же разница, как если бы ты сравнивал:
корова >= табуретка

Ты сравниваешь строки, а не числа, а строки сравнивать нельзя.

sem1313
31.08.2006, 18:14
to _etc
Это понятно...

Но в первончальном варианте я сравнивал
if(FLVer >= "WIN 8,0,00,0") - это наверено не корова и не табуретка...

Я не спутал c FLVer:Number = Number (getVersion ().substr (4).split (",")[0])
т.к. результат у них будет разный...

Я не про результат, а про то что почему Flash так по разному воспринимает:

FLVer >= "WIN 8,0,00,0" и

FLVer >= 8

Вот это интерсено... Я бы даже сказал не про Flash, а про html...

Ведь именно в его обертке случилась такя ситуевина...

etc
31.08.2006, 18:28
"WIN 8,0,00,0" не может быть больше/меньше/равно строке "WIN 7,0,00,0"
Ни в одном языке программирования такое сравнение не будет корректно.
Строки и числа — разные вещи. Ты не можешь сравнить два слова, так?
А числа можешь. Поэтому и сравнивать надо числа.

iNils
31.08.2006, 18:32
Если вдруг выйдет 10-ая версий, то сравнение
trace ("WIN 10,0,0,0" >= "WIN 8,0,00,0");
даст false

sem1313
31.08.2006, 18:48
to _etc:

Объясню подробнее


Мне интересно в чем разница


var FLVer:String = getVersion();

На выходе получим - FLVer = "WIN 8,0,00,0"

и


FLVer:Number = Number (getVersion ().substr (4).split (",")[0])

На выходе получим 8.

для Flash...

Естественно я буду в каждом случае сравнивать ВЫХОД с соответствующим парметром...

И в первом посте я указал, что сравниваю не с числом, а с строкой


if(FLVer >= "WIN 8,0,00,0")

sem1313
31.08.2006, 18:51
"WIN 8,0,00,0"


Ни че себе, т.е. это не сторка(?)...

А что тогда это?

etc
31.08.2006, 19:09
getVersion возвращает строку, а не число.
А сравнивать можно только числа, в который раз уже говорю…
Тебе нужно выдрать конкретное число версии из строки и сравнить с ним.
Так яснее?…

iNils
31.08.2006, 19:16
Сравнивать можно и строки, но делать надо это с умом.
function seq (a, b) {
if (a > b) {
trace (a + " > " + b);
} else if (a < b) {
trace (a + " < " + b);
} else {
trace (a + " = " + b);
}
}
seq ("1", "1"); // 1 = 1
seq ("1", " 1"); // 1 > 1
seq ("01", "1"); // 01 < 1
seq ("2", "11"); // 2 > 11
Последний трейс особенно показательный.

sem1313
31.08.2006, 20:23
Все понятно.

Спасибо всем.