Forums Développement Multimédia

Aller au contenu

override de function private

CODE Actionscript

5 réponses à ce sujet

#1 yann31

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 24 October 2008 - 14:56 PM

Bonjour,

Je voudrait personnaliser une classe enfant de Transition (version personnalisée de Blind)

Action Script


package {

import fl.transitions.Transition;
import fl.transitions.TransitionManager;

class EssentielBlinds extends fl.transitions.Transition {

//#include "Version.as"
public static var version:String = "1.1.0.52";//contenu de "Version.as"

//public var type:Object = EssentielBlinds;
public var className:String = "EssentielBlinds";

private var _numStrips:Number = 10;
private var _dimension:Number;
private var _mask:MovieClip;
private var _innerMask:MovieClip;

function EssentielBlinds(content:MovieClip, transParams:Object, manager:TransitionManager) {
this.type = EssentielBlinds;
this.init(content, transParams, manager);
}

function init(content:MovieClip, transParams:Object, manager:TransitionManager):Void {
//trace ("EssentielBlinds.init()");
super.init(content, transParams, manager);
this._dimension = (transParams.dimension) ? 1 : 0;
if (transParams.numStrips) {
this._numStrips = transParams.numStrips;
}
this._initMask();
}

override public function start():Void {
this._content.setMask(this._mask);
super.start();
}
override public function cleanUp():Void {
this._mask.removeMovieClip();
super.cleanUp();
}
private function _initMask():Void {
var container:MovieClip = this._content;
var depth:Number = this.getNextHighestDepthMC (container);
var mask:MovieClip = this._mask = container.createEmptyMovieClip ("__mask_EssentielBlinds_"+this.direction, depth);
mask._visible = false;
var innerMask:MovieClip = this._innerMask = this._mask.createEmptyMovieClip ("innerMask", 0);
innerMask._x = innerMask._y = 50;
if (this._dimension) {
innerMask._rotation = -90;
}

// draw initial standard 100x100 box
innerMask.beginFill(0xFF0000);
this.drawBox(innerMask, 0, 0, 100, 100);
innerMask.endFill();

var ib:Object = this._innerBounds;
mask._x = ib.xMin;
mask._y = ib.yMin;
mask._width = ib.xMax - ib.xMin;
mask._height = ib.yMax - ib.yMin;
}

private function _render (p:Number):Void {
var h:Number = 100/this._numStrips;
var s:Number = p * h;
var mask:MovieClip = this._innerMask;
mask.clear();
var i:Number = this._numStrips;
mask.beginFill(0xFF0000);
while (i--) {
this.drawBox(mask, -50, i*h - 50, 100, s);
}
mask.endFill();
}

}
}

Mon problème est que j'ai besoin de la fonction _render. Qui est appelée pour dessiner ma transition. C'est même indiqué tel quel dans Transition.as (classe flash)

Action Script


/////////// PRIVATE METHODS

// abstract method - to be overridden in subclasses
private function _render (p:Number):Void {};

J'ai aussi essayer de d'overrider la fonction set progress qui appelle _render histoire de pouvoir appeler monRender() à la place mais j'ai la même erreur :
1023:override non compatible

alors que mon entête de fonction est exactement la même. (copier coller)

Est-ce que quelqu'un a une idée.

Ou une autre méthode pour créer des objets Transition qui s'utilisent avec TransitionManager.

#2 VisitorG

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 193 messages

Posté 24 October 2008 - 15:00 PM

Une fonction private n'étant pas accessible depuis la classe enfant ça me semble illogique de l'overrider.
Essais de la passer en protected.

#3 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 24 October 2008 - 16:58 PM

Bizarre ta classe, voici ce que j'ai dans Transition.as :

Action Script


/**
* @private abstract method - to be overridden in subclasses
*/
protected function _render(p:Number):void {}
donc pas de problème pour l'overrider. smile.gif Le "@private" dans les commentaires indique juste à ASDoc de ne pas publier ce commentaire dans la doc.

#4 Logic

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2733 messages

Posté 24 October 2008 - 17:13 PM

C'est du code AS2, or le statut protected n'existe pas en AS2 il me semble. Du coup il faudrait plutôt penser à composer.

Modifié par Logic, 24 October 2008 - 17:15 PM.


#5 VisitorG

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 193 messages

Posté 24 October 2008 - 17:23 PM

J'avoue avoir même pas lu le code (c'est long et je suis faignant) mais il déclare sa classe dans un package.
Je pense pas que ce sois de l'AS2.

#6 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 24 October 2008 - 17:42 PM

Avoir des _x et du package, en effet ya un truc louche là (j'avais pas lu le code non plus icon_biggrin.gif ) !!



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)