Просмотр полной версии : имя фрейма
как можно получить имя фрема по её номеру? или номер по её имени. облазил весь флэщевый хелп, ничего подобного не нашёл :(
KidsKilla
29.08.2005, 15:35
никак. имена фреймов в свфке киляются.
номер по имени можно? типа того:
MovieClip.prototype.getNumberByLabel = function (label) {
var frame = this._currentframe
this.goToAndStop(label)
var label_frame = this._currentframe
this.goToAndStop(frame)
}
llllllllll
30.08.2005, 05:50
Можно на JSFL написать скриптец, который будет при публикации писать в каждый MC, включая основной таймлайн, объект labels, что-то вроде:
myMC.labels = {a:11,b:35,c:190};
Можно на JSFL написать скриптец, который будет при публикации писать в каждый MC, включая основной таймлайн, объект labels, что-то вроде:
myMC.labels = {a:11,b:35,c:190};
на такое я не способен :)) про JSFL слышыал, но ещё не вникал, что это такое...
2 BitSky
MovieClip.prototype.getNumberByLabel = function (label) {
var frame = this._currentframe
this.goToAndStop(label)
var label_frame = this._currentframe
this.goToAndStop(frame)
}
спасибо за решение. но оно немного не подходит... из-за переходов...
а как же this.goToAndStop(label)?
просто в кадре с этим лэйблом могу бвть экшены или вообще роли будет проигроваться? ммм? всего этого не будет? я тода не понимаю суть прототипов...
твоя правда.
будут гады :)
я писал на ruflash:
чтобы не париться вручную набивать якоря
(теоретически, например, если хотим сделать меню для флэшового хелпа,
нужно якорей накидать не одну тыщу :)
написал JSFL для автоматической раздачи.
это мой первый опыт, сильно не ругайте :)
как юзать:
1. выделяем любой кадр в любом слое
2. вызываем команду add_anchors
в самый верх добавятся два слоя: слой якорей и слой скриптов.
якоря будут поименованы как a1, a2 и т.д. в соответствии с номерами
кадров.
в каждый кадр встанет скрипт вида
this._anchor=номер кадра
соответственно, если понадобится обработчик события перехода на этот
якорь, просто делаем пользовательское свойство, пример:
this.addProperty("_anchor", function () {
return this.current_anchor;
}, function (val) {
this.current_anchor = val;
_root.anyHandler(val);
});
вот собственно код JSFL. Создайте новый JSFL документ, скопируйте и
воткните скрипт (ниже), сохраните под именем add_anchors.jsfl в папке
C:\Documents and Settings\[USER NAME]
\Local Settings\Application Data
\Macromedia\Flash MX 2004\en\Configuration\Commands
и пользуйтесь на здоровье.
var anchors_timeline = fl.getDocumentDOM().getTimeline()
var frames_number = anchors_timeline.getSelectedFrames();
frames_number=frames_number[frames_number.length-1]
var anchors_layer_num = anchors_timeline.addNewLayer("anchors", "normal", true )
anchors_timeline.convertToKeyframes(0, frames_number)
var scripts_layer_num = anchors_timeline.addNewLayer("anchors scripts", "normal", false)
anchors_timeline.convertToKeyframes(0, frames_number)
for (var i=0; i<frames_number; i++) {
anchors_timeline.setSelectedLayers(scripts_layer_num)
anchors_timeline.setSelectedFrames(i, i, true)
anchors_timeline.setFrameProperty('actionScript', 'this._anchor='+(i+1));
anchors_timeline.setSelectedLayers(anchors_layer_num)
anchors_timeline.setSelectedFrames(i, i, true)
anchors_timeline.setFrameProperty('name', 'a'+(i+1));
anchors_timeline.setFrameProperty('labelType', 'anchor');
}
Давай дружить я ты мне будешь по флэшу подсказывать я я многое занаю про linux, *bsd. настройка всевозможных сервисов, глубокое знание php... mysql. interbase/firebird.... :))
llllllllll
30.08.2005, 06:58
Писал когда то вот это:
while(fl.getDocumentDOM().timelines[0] != fl.getDocumentDOM().getTimeline())
{
fl.getDocumentDOM().exitEditMode();
}
var AsString = "labels = {";
var document = flash.getDocumentDOM();
var timeline = document.getTimeline();
var layers = timeline.layers;
for(var lr in layers)
{
var layer = layers[lr];
for(var fr = 0; fr < layer.frameCount; fr++)
{
var frame = layer.frames[fr];
if(frame.labelType == "name")
{
AsString += frame.name + ":" + fr + ",";
fr += frame.duration - 1;
}
}
}
AsString = AsString.substr(0, AsString.length - 1) + "};"
var tempLayerIndex = timeline.addNewLayer("tempLayer", "normal" , true);
timeline.layers[tempLayerIndex].frames[0].actionScript = AsString;
document.testMovie();
timeline.deleteLayer(tempLayerIndex);
Но доделывать не захотелось, так как пользы не много ...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.