Болатов А.
1090 повідомлень
#17 років тому
Есть у кого-нибудь документация к компоненту Shockwave Flash (flash.ocx)?
Интересует подробное описание всех свойств и методов.
Дог Снэп
20 повідомлень
#17 років тому
Почитайте интернет. Примеры поисковых запросов flash.ocx activex tutorial samples и ищите в yahoo.com
Болатов А.
1090 повідомлень
#17 років тому
Я потому и написал в форум, что в интернете информацию не смог найти.
Как правило там примитивные примеры, в которых в лучшем случае FSCommand иллюстрируют.
А хотелось бы полную документацию.
Кое-какую информацию можно почерпнуть из livedocs.adobe.com, раздел по ActionScript, потому что довольно многие методы и свойства именуются одинаково. Но не все, да и в тех, которые совпадают, имеются различия в поведении.
Дог Снэп
20 повідомлень
#17 років тому
На каком языке пишите?
Болатов А.
1090 повідомлень
#17 років тому
Вообще на VB. А какая разница, кроме синтаксической?

Еще вот такой вопрос. Подскажите алгоритм, как определять оптимальный размер окна для воспроизведения клипа?
Сейчас я перехожу на последний фрейм, ставлю режим NoScale, считываю переменные _width и _height и использую их в качестве размера окна. Но алгоритм сбоит, когда последний фрейм имеет размер, отличный от основной части клипа. И вместе с тем автономные flash-плейеры обычно умеют подбирать оптимальный размер окна, значит это возможно.
Максим Б.
2206 повідомлень
#17 років тому
Цитата:
Еще вот такой вопрос. Подскажите алгоритм, как определять оптимальный размер окна для воспроизведения клипа?


Вот это поможет
Дог Снэп
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 повідомлень
#17 років тому
1276730


У клипа 201 фрейм и для каждого из них переменные _width и _height возвращают разные значения.
Максим Б.
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 років тому
Да, теперь я понял в чем проблема Если честно, то даже не представляю как flash-плеер узнает размер флешки. Наверняка есть какое то свойство.
Болатов А.
1090 повідомлень
#17 років тому
Так, гуглить оказывается надо было по слову "dimensions".
Обнаружил следующий загадочный код:

var movieObj = getFlashObj(movie);
var width = movieObj.TGetProperty("/", 8);
var height= movieObj.TGetProperty("/", 9);

Не мог бы кто его прокомментировать, что это за загадочные свойства за номером 8 и 9?
Код работает, но не всегда.
Максим Б.
2206 повідомлень
#17 років тому
Вот полный список свойств TGetProperty



Думаю поможет.