Вопрос к флешерам
1090 сообщений
#17 лет назад
Есть у кого-нибудь документация к компоненту Shockwave Flash (flash.ocx)?Интересует подробное описание всех свойств и методов.
20 сообщений
#17 лет назад
Почитайте интернет. Примеры поисковых запросов flash.ocx activex tutorial samples и ищите в yahoo.com
1090 сообщений
#17 лет назад
Я потому и написал в форум, что в интернете информацию не смог найти.Как правило там примитивные примеры, в которых в лучшем случае FSCommand иллюстрируют.
А хотелось бы полную документацию.
Кое-какую информацию можно почерпнуть из livedocs.adobe.com, раздел по ActionScript, потому что довольно многие методы и свойства именуются одинаково. Но не все, да и в тех, которые совпадают, имеются различия в поведении.
1090 сообщений
#17 лет назад
Вообще на VB. А какая разница, кроме синтаксической?Еще вот такой вопрос. Подскажите алгоритм, как определять оптимальный размер окна для воспроизведения клипа?
Сейчас я перехожу на последний фрейм, ставлю режим NoScale, считываю переменные _width и _height и использую их в качестве размера окна. Но алгоритм сбоит, когда последний фрейм имеет размер, отличный от основной части клипа. И вместе с тем автономные flash-плейеры обычно умеют подбирать оптимальный размер окна, значит это возможно.
2206 сообщений
20 сообщений
#17 лет назад
Просто я тоже на VB только с ним работаю. Вот код для VB6:1) создать пустой проект
2) добавить компонент флеша и расположить его в где-нибудь на форме. Название компонена можно не менять. В моем примере не менял, стоит как по умолчания
3) в код загрузки формы пишем:
Private Sub Form_Load()
Dim MovieX, MovieY ' говорим, что у нас будут 2 переменные
ShockwaveFlash1.LoadMovie 0, "d:\1.swf" ' загружаем в наш компонент на уровень 0 ролик с диска D...
MovieX = ShockwaveFlash1.GetVariable("_root._width") 'загоняем высоту открытой флешки в переменную MovieX
MovieY = ShockwaveFlash1.GetVariable("_root._height")'загоняем высоту открытой флешки в переменную MovieН
MsgBox ("Width: " + MovieX + " Height: " + MovieY) ' выводим мессагу с размерами в пикселях
End Sub
4) Запускаем нажатием F5
1090 сообщений
#17 лет назад
Цитата ("RedLizard"):Вот это поможет ]http://noregret.org/tutor/elastic/
Там про то, как сделать флеш, автоматически адаптирующийся к произвольному размеру.
У меня же обратная задача, узнать, под какой размер флеш создавался и задать этот размер.
Переменные "_width" и "_height" (равно как и "_root._width", "_root._height"

1090 сообщений
#17 лет назад
Цитата ("SnapDog"):Просто я тоже на VB только с ним работаю. Вот код для VB6:
1) создать пустой проект
2) добавить компонент флеша и расположить его в где-нибудь на форме. Название компонена можно не менять. В моем примере не менял, стоит как по умолчания
3) в код загрузки формы пишем:
Private Sub Form_Load()
Dim MovieX, MovieY ' говорим, что у нас будут 2 переменные
ShockwaveFlash1.LoadMovie 0, "d:\1.swf" ' загружаем в наш компонент на уровень 0 ролик с диска D...
MovieX = ShockwaveFlash1.GetVariable("_root._width") 'загоняем высоту открытой флешки в переменную MovieX
MovieY = ShockwaveFlash1.GetVariable("_root._height")'загоняем высоту открытой флешки в переменную MovieН
MsgBox ("Width: " + MovieX + " Height: " + MovieY) ' выводим мессагу с размерами в пикселях
End Sub
4) Запускаем нажатием F5
Я про это и писал.
_root._width и _root._height дают размеры текущего фрейма.
У меня есть несколько клипов, в которых фреймы (первый, последний и промежуточные) имеют разные размеры.
1090 сообщений
#17 лет назад
Да, и еще, как выгрузить клип?На livedocs для объекта MovieClip имеется метод unloadMovie. Однако в ActiveX-компоненте такого метода нет. А .LoadMovie 0, "" дает ошибку.
20 сообщений
#17 лет назад
Цитата ("alibek"):
Я про это и писал.
_root._width и _root._height дают размеры текущего фрейма.
У меня есть несколько клипов, в которых фреймы (первый, последний и промежуточные) имеют разные размеры.
Сорри, не допонял... тогда используй банально FScommand

2206 сообщений
#17 лет назад
Цитата:У меня есть несколько клипов, в которых фреймы (первый, последний и промежуточные) имеют разные размеры.
Не верю, покажите.
1090 сообщений
2206 сообщений
#17 лет назад
Значит не те параметры _width и _height берете. У одной флешки не может быть разный размер по определению.
1090 сообщений
#17 лет назад
А какие надо брать?Я пишу так:
With ShockwaveFlash
.GotoFrame .TotalFrames - 1
.ScaleMode = 3 'NoScale
W = .GetVariable("_width")
H = .GetVariable("_height")
End With
С клипами, подобным выложенному, этот способ не прокатывает (заключительный фрейм там меньше основных).
Как тогда надо размер определять? Или надо масштабировать по самому большому фрейму?
2206 сообщений
#17 лет назад
Не знаю как это использовать с ActiveX компонентой, но вот к примеру из флеша надо брать Stage.width и Stage.height
1090 сообщений
#17 лет назад
Stage.width и stage.height — это высота и ширина контейнера. Эти значения никак не зависят от клипа, только от контейнера, внутри которого размещается флеш.А мне надо этот контейнер сделать такого размера, под который ролик изначально и разрабатывался.
Вот типичный HTML-код для размещения флеша на странице:
<embed src=... menu=0 scale=noscale width=700 height=450 type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
А теперь представь, что тебе неизвестны width и height и тебе надо их вычислять автоматически (на клиентской стороне).
2206 сообщений
#17 лет назад
Да, теперь я понял в чем проблема 
1090 сообщений
#17 лет назад
Так, гуглить оказывается надо было по слову "dimensions".Обнаружил следующий загадочный код:
var movieObj = getFlashObj(movie);
var width = movieObj.TGetProperty("/", 8);
var height= movieObj.TGetProperty("/", 9);
Не мог бы кто его прокомментировать, что это за загадочные свойства за номером 8 и 9?
Код работает, но не всегда.