![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2006
Сообщений: 32
|
Существуют 3 класса MovieItemVM extends MovieClip, ArhivMovie extends MovieItemVM,
VexMenuMovie extends MovieItemVM Во всех трех существует функция refreshMovie, так вот вопрос собственно почему такое может быть, что в ArhivMovie эта функция перекрывает функцию в MovieItemVM, а в VexMenuMovie – нет. ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Покажи классы.
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 32
|
MovieItemVM.as
import newsItemTxt;
import mx.utils.Delegate;
import mx.events.EventDispatcher;
class MovieItemVM extends MovieClip {
var strTitle:String;
var strAbstract:String;
var strDesc:String;
var strImg:String;
var txtTitle:TextField;
var containerImg:MovieClip
var podlozhka:MovieClip;
var format1_fmt:TextFormat;
var isImgLoaded;
var height_pole:Number;
var width_pole:Number;
var WIDTHMOVIE:Number = 600;
// Создаем методы которые нам передаст EventDispatcher
private var dispatchEvent:Function; // Данный метод будет вещать события
public var addEventListener,removeEventListener:Function; // Данные два метода будут подписывать и удалять слушатели
public var onRefreshMovie:Function; // А это наше будущее событие
/////////////////////////////////////////////////////////////////////
// Конструктор класса
/////////////////////////////////////////////////////////////////////
function MovieItemVM() {
EventDispatcher.initialize(this);
this._visible = false;
isImgLoaded = 0;
}
/////////////////////////////////////////////////////////////////////
// Методы PUBLIC
////////////////////////////////////////
public function getHeight() {
return height_pole;
}
public function getwidth() {
return width_pole;
}
private function loadImages() {
if(strImg){
this.createEmptyMovieClip("containerImg", 3);
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(this);
image_mcl.loadClip(strImg, containerImg);
} else {
this.onLoadError();
}
}
private function onLoadError(target_mc:MovieClip) {
isImgLoaded = -1;
trace('movieItemVM: onLoadError');
proba();
refreshMovie();
}
private function proba() {
trace('movieItemVM: proba');
}
private function onLoadInit(target_mc:MovieClip) {
isImgLoaded = 1;
trace('movieItemVM: onLoadInit');
proba();
refreshMovie();
}
public function showMovie(){
this._visible = true;
}
public function hideMovie(){
this._visible = false;
}
public function createMovie(){
if( isImgLoaded == 0 ){
this.loadImages();
} else {
trace('movieItemVM: createMovie');
refreshMovie();
}
}
public function CreateText(txtTit){
format1_fmt = new TextFormat();
format1_fmt.font = "Arial";
format1_fmt.bold = true;
format1_fmt.color = 0xFFFFFF;
txtTit.multiline = true;
txtTit.condenseWhite = true;
//txtTit.border = true;
txtTit.wordWrap = true;
txtTit.autoSize = true;
txtTit.text = strDesc;
txtTit._y = 0;
txtTit.setTextFormat(this.format1_fmt);
}
private function refreshMovie(){
trace('movieItemVM: refreshMovie');
//проверка существования картинки в блоке
if(containerImg != undefined){
this.createTextField("txtTitle", 2, containerImg._width + 20, 0, WIDTHMOVIE - (containerImg._width + 20), 300);
this.CreateText(txtTitle);
width_pole = txtTitle._width + containerImg._width + 20;
if(txtTitle._height>containerImg._height){
height_pole = txtTitle._height;
} else{
height_pole = containerImg._height;
}
}else{
this.createTextField("txtTitle", 2, 0, 0, WIDTHMOVIE, 300);
this.CreateText(txtTitle);
width_pole = txtTitle._width;
height_pole = txtTitle._height;
}
this.createEmptyMovieClip("podlozhka", 0);
podlozhka.beginFill(0xFFFFFF);
podlozhka.moveTo(0, 0);
podlozhka.lineTo(0, 0);
podlozhka.lineTo(WIDTHMOVIE, 0);
podlozhka.lineTo(WIDTHMOVIE, height_pole);
podlozhka.lineTo(0, height_pole);
podlozhka.endFill();
podlozhka._alpha=30;
dispatchEvent({type:'onRefreshMovie'});
}
public function fill(list) {
strTitle = list["title"];
strAbstract = list["subtitle"];
strDesc = list["description"];
strImg = list["img"];
}
}
ArhivMovie.as import MovieItemVM;
import mx.utils.Delegate;
import mx.events.EventDispatcher;
class ArhivMovie extends MovieItemVM {
var txtArhiv:TextField;
// Создаем методы которые нам передаст EventDispatcher,
private var dispatchEvent:Function; // Данный метод будет вещать события
public var addEventListener,removeEventListener:Function; // Данные два метода будут подписывать и удалять слушатели
public var onParseXml:Function; // А это наше будущее событие
function ArhivMovie() {
}
/////////////////////////////////////////////////////////////////////
// Методы PUBLIC
/////////////////////////////////////////////////////////////////////
private function onRelease(){
var eventObject:Object = {type:'onReleaseNum'};
eventObject.Num = this.strTitle;
dispatchEvent(eventObject);
}
private function proba() {
trace('ArhivMovie: proba');
}
private function refreshMovie(){
trace('ArhivMovie: refreshMovie');
containerImg.addListener(this);
this.txtArhiv = this.createTextField("txtArhiv", this.getNextHighestDepth(), 70, 120, 300, 300);
//this.txtArhiv._y = containerImg._height + 10;
CreateText(this.txtArhiv);
dispatchEvent({type:'onRefreshMovie'});
}
}
VexMenuMovie.as import MovieItemVM;
import mx.utils.Delegate;
import mx.events.EventDispatcher;
class VexMenuMovie extends MovieItemVM {
var txtVex:TextField;
//var vex:MovieClip;
// Создаем методы которые нам передаст EventDispatcher,
private var dispatchEvent:Function; // Данный метод будет вещать события
public var addEventListener,removeEventListener:Function; // Данные два метода будут подписывать и удалять слушатели
public var onParseXml:Function; // А это наше будущее событие
function VexMenuMovie() {
trace('VexMenuMovie');
}
/////////////////////////////////////////////////////////////////////
// Методы PUBLIC
/////////////////////////////////////////////////////////////////////
private function onRelease(){
var eventObject:Object = {type:'onReleaseNum'};
eventObject.Num = this.strTitle;
dispatchEvent(eventObject);
}
private function proba() {
trace('VexMenuMovie: proba');
}
private function refreshMovie(){
trace('VexMenuMovie: refreshMovie');
//this.vex = this.createEmptyMovieClip("vex", this.getNextHighestDepth());
this.txtVex = this.createTextField("txtVex", this.getNextHighestDepth(), 70, 120, 300, 300);
//this.txtArhiv._y = containerImg._height + 10;
CreateText(this.txtVex);
dispatchEvent({type:'onRefreshMovie'});
}
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
VexMenuMovie расширяет другой класс, который не существует.
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 32
|
ArhivMovie extends MovieItemVM;
VexMenuMovie extends MovieItemVM в чем разница я не поняла? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Гм, перед этим я видел extends movieItemVM.
Сейчас посмотрю. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Можно рабочий пример?
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 32
|
я в личку отправила ссылку, тк как не влазит по объему
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Странность оказалась в классе ListMovie:
if(this.type == 'vex'){
var a= VexMenuMovie(_root.sod.attachMovie("VexMenuMovie", "clip"+i, i+1, {_x:0, _y:100*(i+1)}));
listMovies[i] = a;
trace('onParseXml: vex');
} /// ^^^^ приаттачили мувик, далее новое условие
if(this.type == 'arhiv'){ // если type равен arhiv
listMovies[i] = _root.sod.attachMovie("ArhivMovie", "clip"+i, i+1, {_x:0, _y:100*(i+1)});
} else{ // если не равен, то…
listMovies[i] = _root.sod.attachMovie("MovieItemVM", "clip"+i, i+1, {_x:0, _y:100*(i+1)});
}
А вообще, там тихий ужас — я ковырялся целых полчаса, ища ошибку… Последний раз редактировалось iNils; 07.12.2006 в 23:52. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 32
|
ой =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 05:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|