Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   MediaPlayback.contentPath не работает (http://www.flasher.ru/forum/showthread.php?t=113283)

MikeMike 24.06.2008 03:25

MediaPlayback.contentPath не работает
 
Есть MediaPlayback, если я в его свойствах в компонент инспекторе прописываю URL все работает, если я пишу в первом кадре видео:
Код:

pb.contentPath="bob.flv";
trace( pb.contentPath );

То нихрена не работает. contentPath присваивается правильное значение, но ничего не происходит. Пробывал не в первом кадре, пробывал по кнопке. Пробывал вызывать еще метод load(), play().
Я уже и поиском попользовался (нашел, кстати, 2 точно таких же вопроса без единого ответа ;( и FAQ почитал.... Уже мозг закипел реально.

Как так - через инспектор свойств работает, а через скрипт - нет???

MikeMike 24.06.2008 22:53

Так похоже это будет третий экземпляр одного и того же вопроса, на который никто не даст ответа... Что, никто не сталкивался? Ау?!

fljot 24.06.2008 23:30

а вы когда кодом прописываете contentPath, в компонент-инспекторе при этом удаляете?

MikeMike 24.06.2008 23:46

Если не удалять, то все работает как прежде (проигрывается то, что написано в компонент инспекторе, то что записано в contentPath в него записывается, но на видео это никак не сказывается).

В mediaDisplay есть метод setMedia. Так вот он работает. Но в MediaPlayback такого метода нет. В чем тут подвох?

MikeMike 24.06.2008 23:49

Я понял, что компонент игнорит, то что я пишу в contentPath. Чтобы я туда ни писал, он продолжает играть то, что играл прежде (соотвественно, если URL не прописывать, то будет молчать как прежде).

Может надо его как-то носом ткнуть, чтобы он загрузил то, что я ему пишу?

В mediaDisplay есть метод setMedia. Так вот он работает. Но в MediaPlayback такого метода нет.

wvxvw 25.06.2008 00:00

нет, нужно дожаться инициализации компонента, вот так они криво сделаны... проверяйте в onEnerFrame наличие такого свойства у компонента, когда оно окажется в наличии присваивайте ему значение:
Код:

onEnterFrame = function () {
if (myMediCom.contentPath) {
myMediCom.contentPath = 'someContentPath';
delete this.onEnterFrame;
}
}


MikeMike 25.06.2008 01:36

Я уж было обрадовался, что решение найдено, но ничего работает....

В "if (myMediCom.contentPath)" он сразу заходит если URL прописан и вообще не заходит, если URL не прописан (в инспекторе свойств). Так что если URL не прописывать (что нам и надо), то код под if никогда не выполнится.

Если же URL прописан, все по-прежнему. contentPath изменяется, но на воспоизведении клипа это никак не сказывается. :(

Наконец, я попробывал вставлять contentPath = "имяфайла"; в on(click) кнопки. Так и там не работает!!! Кнопка-то точно нажимается, когда все загрузилось. Так что дело в чем-то другом.

wvxvw 25.06.2008 02:31

Ну, тогда даж не знаю... а вы уверены, что у этого компонента есть (должно быть) такое свойство?
О, нашел =)
Код:

onEnterFrame = function () {
if (myMediCom.setMedia) {
myMediCom.setMedia("http://www.helpexamples.com/flash/video/clouds.flv", "FLV");
delete this.onEnterFrame;
}
}

просто дефолтное значение contentPath == undefined, поэтому ентерфрейм никогда не удалялся

MikeMike 25.06.2008 11:26

Посмотрите выше, я же уже писал, нет у этого компонента метода SetMedia. У меня в книжке по Flash + в хелпе везде написано, что надо тупо использовать contentPath. А он не работает!?

Люди!!! Как вы делаете обычный прогрыватель flv-файлов?
Чтобы передавать имя файла во Flash через GET и потом его проигрывать!?
Задача ведь элементарная, казалось бы. И везде используется...

Может это только у меня contentPath не работает???

wvxvw 25.06.2008 13:58

Ленивый вариант - FLVPlayBack компонент. Нормальный - с использованием NetConnection / NetStream. А по поводу вашего случая - я кажется начинаю догадываться =) Этот компонент состоит из двух частей, одна - контроли, вторая - дисплей, нужно контролю назначать contentPath.

MikeMike 26.06.2008 15:28

FLVPlayBack компонент = MediaPlayback?
У меня в есть только MediaPlayback.

Про не ленивый вариант я знаю, но там ведь не будет кнопочек контроля (пауза, стоп). Можно, конечно, их вручную сделать, но зачем так извращаться, когда все уже сделано.

Как я могу доступиться до дисплея, который засунут внутри MediaPlayback?
Да и к тому же вряд ли в этом дело, ведь contentPath в MediaDisplay тоже не работает!!!! (зато там есть SetMedia).

Единственный приемлимый вариант, который я вижу сейчас - использовать два компонента MediaDisplay и MediaController. Но тут обнаруживается новая проблема (да что же это в конце концов такое!?). В MediaPlayback в инспекторе свойств было свойство ControlVisibility = auto, on, off, которое показывает видно ли кнопочки пауза, громкость и т.п.: видно (on), нет (off) или они сами высовываются при наведении мышки (auto). А в MediaController этого свойства нет. А мне этого изврата с наведением мышки совсем не надо.

Может Macromedia Flash MX 2004 страшно кривая вещь и стоит поставить что-то более новое (CS)? У меня литература под эту версию заточена, поэтому я ее и поставил.

wvxvw 26.06.2008 16:13

FLVPlayback компонент != MediaPlayback
Не знаю, если честно, вы пока единственный, кто на моей памяти воспользовался этим компонентом =) Вот именно для того, чтобы не извращаться с настройками, которые еще и непонятно как работают проще свой написать...

MikeMike 26.06.2008 16:50

Когда я брался за эту задачу, посмотрел в книжке, как это делать. В книжке написано про компоненты Media*. Зачем нужны компоненты, если они не работают? :(

А FLVPlayback откуда взять? У меня его в Components нет. :eek:

MikeMike 26.06.2008 17:32

Ничего не понимаю! Я дуб!

В инете все обсуждают FLVPlayback, но никто не спрашивает, где его взять как будто он у них изначально есть. ГДЕ ЕГО ВЗЯТЬ????!!!!

wvxvw 26.06.2008 18:07

Вложений: 1
Ctrl + F7 -> video -> FLVPlayback -> перетащить в библиотеку...

вот, сделал пример =)

MikeMike 26.06.2008 18:11

По Ctrl-F7 есть:
DataComponents
MediaComponents
UI Components

всё!

wvxvw 26.06.2008 18:38

флеш какой-то недоделаный... варианты: проапдейтить / переустановить / попросить у кого-нть SWC с дефолтными компонентами.
PS. смотри пост выше с примером

Ой, только сейчас обратил внимание, что 7-й Флеш... я уже не помню где он там был... или может его тогда не было вообще...

MikeMike 28.06.2008 00:28

Я поставил 8 флэш и пришло ко мне счастье!

(правда я еще не проверял)

MikeMike 30.06.2008 23:59

Ну и геморрой! Пока я тут одну строчку во флэш отлаживаю, я бы на PHP пару сотен отладил. :confused:

Поставил я FLVPlayback. Подскажите, пожалуйста, почему по Ctrl-Enter все работает (видео видно), а по F12 вечная загрузка мувика в плеер? Я уже паблиш сеттингс все почти наизусть выучил, а понять в чем дело не могу.

Если по swf в винде кликнуть, нормально работает, а если в HTML его запихнуть, нихрена. Все файлы в одной папке живут.

wvxvw 01.07.2008 00:15

А в Global Security Settings на сайте Adobe заглядывали? А плеер какой? А что написано в ХТМЛ в allowAccess?
ЗЫ. Тоже нашли с чем сравнить... =) Для новичка ПХП == кромешная тьма, самый худший мануал, который только можно себе представить. Что уж и говорить о многозначительных названиях функций =) Не в обиду будет сказано. Отнеситесь к этому, как к шутке =) В любом деле опыт очень важная составляющая производительности =)

MikeMike 01.07.2008 01:10

Цитата:

А в Global Security Settings на сайте Adobe заглядывали?
А где это? Я заглянул просто на сайт адобе. Там я нашел, например, это шаманство:

Код:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="myflashvars" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="test4.swf" />
<param name="FlashVars" value="bbb=http://weblogs.adobe.com/">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="test4.swf" FlashVars="bbb=http://weblogs.adobe.com/" quality="high" bgcolor="#ffffff" width="550" height="400" name="myflashvars" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object>

вставил его в нтмл и... ничего ровным счетом не изменилось.
Вместо allowScriptAccess=sameDomain пробовал ставить Allways. Эти прокладки тоже не помогли.
Плеер девятый. Что, собственно, ему не нравится?

wvxvw 01.07.2008 02:25

Global Security Settings

то, что вы нашли - это разрешение страницой содержащей ActiveX обращаться к ней из ActiveX"а. Но проблемы безопасности возникают не там, а на этапе соединения с удаленным сервером, с которого вы очевидно пытаетесь получить FLV. Если FLV находится в той же директории, тогда в Security Manager нужно указать эту директорию в разрешенных. Если FLV находится на удаленном сервере - на сервере должен быть crossdomain.xml разрешающий доступ вашей SWF (если SWF не находится в той же директории на сервере, что и FLV).

Да, и еще важна полная версия плеера, политики безопасности в 9.115 и 9.124 отличаются.

MikeMike 01.07.2008 11:28

Да я до сервера пока не дошел. У меня на локальной машине не работает. У меня на компьютере, в папке C:\XXX лежит test.swf, bob.flv и test.htm. test.htm показывает test.swf, а он, в свою очередь, bob.flv. Клик по swf показывает, а по htm - нет. И еще я не понимаю, причем тут версия плеера, ведь получившаяся байда должна будет работать у всех пользователей, вне зависимости от того, какой у кого плеер. Нет?

Да, кстати, я не собираюсь проигрывать flv-шки с других серверов. В инете все будет на одном сервере. Я сейчас еще поэкспериментирую с тем, что Вы написали.

MikeMike 01.07.2008 11:45

Параметр codebase из HTML и чья-то версия, в нем указанная, на что-нибудь влияют?

MikeMike 01.07.2008 12:03

Вложений: 2
На домашней машине у меня хотя бы кнопочки плеера рисовались, а тут (на работе) даже и этого нет. См. вложения.

MikeMike 14.07.2008 03:17

Блин, оказывается, нельзя было открывать как локальный файл, надо было через localhost. Я тормозил, никто не подсказал... Ох уж эта безопасность (что уж безопаснее, казалось бы, как открыть локальный файл на своем компьютере?)

wvxvw 14.07.2008 03:46

>>> И еще я не понимаю, причем тут версия плеера

Вот млин, упрямство =)
Говорю же, у разных версий плеера разные политики безопасности.
У 9.045 менее жесткие, у 9.124 - более жесткие. А в 6-м плеере так вообще можно было файлы на локальном комьютере записывать.
В 9.115 при отсутствии кроссдомейн политик будет выдано уведомление, но контент загрузится, в 9.124 - контент не загрузится, и будет ошибка. В 9.045 кроссдомейн не должен был, например имплементить ДТД его специфический, а начиная с 9.155 - должен, и в незаполненые поля будут подставлены дефолтные значения. Кроссдомейны в 8-м плеере, не помню до какой версии, не понимали * в качестве аттрибута, и до 9-й версии не понимали * в качестве маски для аттрибута. Т.е. allow-access-from="*.mydomain.com" - валидный параметр для 9-ки, но в 8-ке домейн www.mydomain.com не будет считаться разрешенным при точно таком же ХМЛе, ну и т.д.
Адобовские статьи про кроссдомейны запутанные, длинные и скучные, но их надо осилить =) - иначе грабли неизбежны =)


Часовой пояс GMT +4, время: 07:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.