PDA

Просмотр полной версии : Внешние библиотеки


ujim
21.12.2008, 15:32
Подскажите в чем ошибка.
Почему скомпилированная флешка запускается и проигрывается в стандартном проигрывателе и не хочет запускаться на HTML странице?

Исходники тут:
http://narod.ru/disk/4524184000/libLoader.zip.html

Просмотрел почти весь почти весь форум, решения не нашел. :(

Предположил что моя проблема в неверном перелоадере.

Попытался загружать библиотеки и отслеживать загружен файл или нет
через
mclListener.onLoadInit

Возник вопрос.
Аттачить элементы загруженной библиотеки можно только внутри контейнера? или можно влюбой мувик,
как например: я загрузил мувик в _root.Board.image_mc
а приаттачить компоненты хотел бы в _root.mc

dimarik
22.12.2008, 02:26
Все нормально работает. Аттачить символы загруженной библиотеки можно только к данному mc-контейнеру (в который загрузили библиотеку) и его детям.

Немного поправленный код. Так, для размышлений.
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (C)
//
///////////////////////////////////////////////////////////////////////////////

/**
* @author
* @version 1.0
* @langversion 2.0
* @playerversion 7.0
*
* filename: CGameBoard.as
*
*/

class CGameBoard extends MovieClip {

//-------------------------------------------------------------------------
//
// Class's variables
//
//-------------------------------------------------------------------------

public static var g: CGameBoard = null;

private static var _mcl: MovieClipLoader = null;

//-------------------------------------------------------------------------
//
// Constructor
//
//-------------------------------------------------------------------------

/**
* Constructor
*/
private function CGameBoard () {
g = this;
if (_mcl == null) _mcl = new MovieClipLoader();
this.init();
}

//-------------------------------------------------------------------------
//
// Intrinsic symbols
//
//-------------------------------------------------------------------------

private var addClip: MovieClip;

private var attachClip: MovieClip;

private var playSound1: MovieClip;

private var loadInfo: TextField;

//-------------------------------------------------------------------------
//
// Private variables
//
//-------------------------------------------------------------------------

private var _s1: Sound;

private var _s2: Sound;

private var _image_mc: MovieClip;

//-------------------------------------------------------------------------
//
// Private methods
//
//-------------------------------------------------------------------------

/**
*
* @private
*
*/
private function init():Void {
var app:CGameBoard = this;
this.addClip.onPress = function() : Void {
app.loadClipFromLib();
};

this.attachClip.onPress = function() : Void {
app.addClipFromLib();
};

this.playSound1.onPress = function() : Void {
app.sound1Play();
};

this._image_mc = this.createEmptyMovieClip("_image_mc", this.getNextHighestDepth());

}

/**
*
* @private
*
*/
private function loadClipFromLib () :Void {
_mcl.addListener(this);
_mcl.loadClip("lib.swf", _root.mc);
}

/**
*
* @private
*
*/
private function onLoadInit(target_mc:MovieClip):Void {
_mcl.removeListener(this);
this.loadInfo.text = "loaded to: " + target_mc;
this.addClipFromLib();
}

/**
*
* @private
*
*/
private function addClipFromLib():Void {
var clip:MovieClip = _root.mc.createEmptyMovieClip('child', 1).attachMovie("skinView2", "skinView" , 1 );
this.loadInfo.text += "\nattached to: " + clip._parent;
//var clip:MovieClip = _root.mc.attachMovie("skinView2", "skinView" , 1 );
}

/**
*
* @private
*
*/
private function sound1Play():Void {
this._image_mc.start();
}

}

Упоминать _root в классе - моветон. Постарайтесь передать ссылку на него в класс.

ujim
22.12.2008, 11:12
Спасибо огромное , буду разбираться

Огромная благодарность dimarik.

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